diff options
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | include/ruby/defines.h | 4 | ||||
-rw-r--r-- | pack.c | 12 |
3 files changed, 18 insertions, 7 deletions
@@ -1,6 +1,13 @@ +Fri Apr 5 20:41:49 2013 Tanaka Akira <akr@fsij.org> + + * include/ruby/defines.h (HAVE_TRUE_LONG_LONG): Defined to distinguish + availability of long long and availability of 64bit integer type. + + * pack.c: Use HAVE_TRUE_LONG_LONG to distinguish q! and Q! support. + Fri Apr 5 20:19:42 2013 Tanaka Akira <akr@fsij.org> - * addr2line.c: include ruby/missing.h to fix compile error on Debian. + * addr2line.c: Include ruby/missing.h to fix compile error on Debian. Fri Apr 5 19:39:52 2013 Nobuyoshi Nakada <nobu@ruby-lang.org> diff --git a/include/ruby/defines.h b/include/ruby/defines.h index 99305b2c4b..46f3399b0c 100644 --- a/include/ruby/defines.h +++ b/include/ruby/defines.h @@ -114,6 +114,10 @@ void xfree(void*); #define STRINGIZE0(expr) #expr #endif +#ifdef HAVE_LONG_LONG 1 +# define HAVE_TRUE_LONG_LONG 1 +#endif + #if SIZEOF_LONG_LONG > 0 # define LONG_LONG long long #elif SIZEOF___INT64 > 0 @@ -22,21 +22,21 @@ (__GNUC__ == (major) && __GNUC_MINOR__ == (minor) && __GNUC_PATCHLEVEL__ >= (patchlevel)))) /* - * It is intentional that the condition for natstr is HAVE_LONG_LONG - * instead of LONG_LONG. + * It is intentional that the condition for natstr is HAVE_TRUE_LONG_LONG + * instead of HAVE_LONG_LONG or LONG_LONG. * This means q! and Q! means always the standard long long type and * causes ArgumentError for platforms which has no long long type, * even if the platform has an implementation specific 64bit type. * This behavior is consistent with the document of pack/unpack. */ -#ifdef HAVE_LONG_LONG +#ifdef HAVE_TRUE_LONG_LONG static const char natstr[] = "sSiIlLqQ"; #else static const char natstr[] = "sSiIlL"; #endif static const char endstr[] = "sSiIlLqQ"; -#if SIZEOF_SHORT != 2 || SIZEOF_LONG != 4 || (defined(HAVE_LONG_LONG) && SIZEOF_LONG_LONG != 8) +#if SIZEOF_SHORT != 2 || SIZEOF_LONG != 4 || (defined(HAVE_TRUE_LONG_LONG) && SIZEOF_LONG_LONG != 8) # define NATINT_PACK #endif @@ -68,8 +68,8 @@ static const char endstr[] = "sSiIlLqQ"; # define NATINT_LEN(type,len) ((int)sizeof(type)) #endif -#ifdef HAVE_LONG_LONG -# define NATINT_LEN_Q NATINT_LEN(LONG_LONG, 8) +#ifdef HAVE_TRUE_LONG_LONG +# define NATINT_LEN_Q NATINT_LEN(long long, 8) #else # define NATINT_LEN_Q 8 #endif |