X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=support%2Fmph.h;h=cb5d94131da010bec4af329b7495109199948641;hb=b8893efbccd64f92c81082e42b8e480b74881927;hp=8a61999942641e4e81bb5c953e5c04f494510c4f;hpb=2d23bfcbce7a3f7e54dcd5911adb88b244baca35;p=mono.git diff --git a/support/mph.h b/support/mph.h index 8a619999426..cb5d94131da 100644 --- a/support/mph.h +++ b/support/mph.h @@ -74,6 +74,16 @@ #define L_XTND SEEK_END #endif /* ndef L_XTND */ +/* + * OS X doesn't define MAP_ANONYMOUS, but it does define MAP_ANON. + * Alias them to fix: https://bugzilla.xamarin.com/show_bug.cgi?id=3419 + */ +#ifdef PLATFORM_MACOSX +#ifndef MAP_ANONYMOUS +#define MAP_ANONYMOUS MAP_ANON +#endif /* ndef MAP_ANONYMOUS */ +#endif /* ndef PLATFORM_MACOSX */ + /* * XATTR_AUTO is a synonym for 0 within XattrFlags, but most systems don't * define it. map.c doesn't know that, though, so we ensure that it's defined @@ -139,6 +149,13 @@ typedef gint64 suseconds_t; return ret; \ }}G_STMT_END +#define mph_have_uint_overflow(var) ((var) < 0 || (var) > UINT_MAX) + +#define mph_return_val_if_uint_overflow(var, ret) \ + _mph_return_val_if_cb_(var, ret, mph_have_uint_overflow) + +#define mph_return_if_uint_overflow(var) mph_return_val_if_uint_overflow(var, -1) + #define mph_have_long_overflow(var) ((var) > LONG_MAX || (var) < LONG_MIN) #define mph_return_val_if_long_overflow(var, ret) \ @@ -146,14 +163,14 @@ typedef gint64 suseconds_t; #define mph_return_if_long_overflow(var) mph_return_val_if_long_overflow(var, -1) -#define mph_have_ulong_overflow(var) ((var) > ULONG_MAX) +#define mph_have_ulong_overflow(var) (var) < 0 || ((var) > ULONG_MAX) #define mph_return_val_if_ulong_overflow(var, ret) \ _mph_return_val_if_cb_(var, ret, mph_have_ulong_overflow) #define mph_return_if_ulong_overflow(var) mph_return_val_if_ulong_overflow(var, -1) -#define mph_have_size_t_overflow(var) ((var) > MPH_SIZE_T_MAX) +#define mph_have_size_t_overflow(var) ((var) < 0 || (var) > MPH_SIZE_T_MAX) #define mph_return_val_if_size_t_overflow(var, ret) \ _mph_return_val_if_cb_(var, ret, mph_have_size_t_overflow) @@ -175,6 +192,8 @@ typedef gint64 suseconds_t; #define mph_return_if_time_t_overflow(var) mph_return_if_long_overflow(var) +#define mph_return_if_socklen_t_overflow(var) mph_return_if_uint_overflow(var) + #define mph_return_if_val_in_list5(var,a,b,c,d,e) \ do { \ int v = (var); \