* Miguel de Icaza (miguel@ximian.com)
*
* (C) 2001 Ximian, Inc.
+ * Copyright 2012 Xamarin Inc
*/
#include <config.h>
#include <stdio.h>
const char *ptr;
char *s, *result;
GString *res = g_string_new ("");
- int len;
MonoMethodSignature *sig;
mono_metadata_decode_row (&m->tables [MONO_TABLE_TYPESPEC], idx-1, cols, MONO_TYPESPEC_SIZE);
ptr = mono_metadata_blob_heap (m, cols [MONO_TYPESPEC_SIGNATURE]);
- len = mono_metadata_decode_value (ptr, &ptr);
+ /* len = */ mono_metadata_decode_value (ptr, &ptr);
switch (*ptr++){
case MONO_TYPE_PTR:
g_string_append (res, "*");
break;
- case MONO_TYPE_FNPTR:
- sig = mono_metadata_parse_method_signature_full (m, container, 0, ptr, &ptr);
+ case MONO_TYPE_FNPTR: {
+ MonoError error;
+ sig = mono_metadata_parse_method_signature_full (m, container, 0, ptr, &ptr, &error);
+ g_assert (mono_error_ok (&error)); /*FIXME don't swallow the error message*/
s = dis_stringify_function_ptr (m, sig);
g_string_append (res, "method ");
g_string_append (res, s);
g_free (s);
break;
-
+ }
case MONO_TYPE_ARRAY:
ptr = get_type (m, ptr, &s, is_def, container);
g_string_append (res, s);
method_name = mono_metadata_string_heap (m, cols [MONO_METHOD_NAME]);
param_index = cols [MONO_METHOD_PARAMLIST];
if (!method) {
+ MonoError error;
const char *sig = mono_metadata_blob_heap (m, cols [MONO_METHOD_SIGNATURE]);
container = mono_metadata_load_generic_params (m, MONO_TOKEN_METHOD_DEF | methoddef_row, container);
- if (container)
- mono_metadata_load_generic_param_constraints (m, MONO_TOKEN_METHOD_DEF | methoddef_row, container);
+ if (container) {
+ mono_metadata_load_generic_param_constraints_checked (m, MONO_TOKEN_METHOD_DEF | methoddef_row, container, &error);
+ g_assert (mono_error_ok (&error)); /*FIXME don't swallow the error message*/
+ }
mono_metadata_decode_blob_size (sig, &sig);
- method = mono_metadata_parse_method_signature_full (m, container, methoddef_row, sig, &sig);
+ method = mono_metadata_parse_method_signature_full (m, container, methoddef_row, sig, &sig, &error);
+ g_assert (mono_error_ok (&error)); /*FIXME don't swallow the error message*/
free_method = 1;
}
{
char *allocated_modifier_string, *allocated_type_string;
const char *ptr = mono_metadata_blob_heap (m, blob_signature);
- const char *base;
char *res;
int len;
len = mono_metadata_decode_value (ptr, &ptr);
- base = ptr;
/* FIELD is 0x06 */
g_assert (*ptr == 0x06);
/* hex_dump (ptr, 0, len); */
char *allocated_ret_type, *s;
const char *cconv_str;
gboolean seen_vararg = 0;
- int param_count, signature_len;
+ int param_count;
int i, gen_count = 0;
int cconv;
- signature_len = mono_metadata_decode_value (ptr, &ptr);
+ /* signature_len = */ mono_metadata_decode_value (ptr, &ptr);
if (*ptr & 0x20){
if (*ptr & 0x40)
readr4 (ptr, &r);
/* Crazy solaris systems doesn't have isnormal */
-#ifdef HAVE_FINITE
- normal = finite (r);
+#ifdef HAVE_ISFINITE
+ normal = isfinite (r);
#else
- normal = isnormal (r);
+ normal = !dis_isinf (r) && !dis_isnan (r);
#endif
if (!normal) {
return g_strdup_printf ("float32(0x%08x)", read32 (ptr));
readr8 (ptr, &r);
/* Crazy solaris systems doesn't have isnormal */
-#ifdef HAVE_FINITE
- normal = finite (r);
+#ifdef HAVE_ISFINITE
+ normal = isfinite (r);
#else
normal = isnormal (r);
#endif
char*
get_marshal_info (MonoImage *m, const char *blob) {
- int len, size = 0;
+ int size = 0;
- len = mono_metadata_decode_blob_size (blob, &blob);
+ /* len = */ mono_metadata_decode_blob_size (blob, &blob);
switch (*blob) {
case MONO_NATIVE_BOOLEAN: