diff --git a/ChangeLog b/ChangeLog index 57feff07e5..3c706b5db8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Fri Feb 10 01:29:05 2012 Nobuyoshi Nakada + + * ext/dl/dl.h (DLALIGN): round up at once and get rid of overflow. + Fri Feb 10 00:47:07 2012 Nobuyoshi Nakada * test/ruby/envutil.rb (assert_no_memory_leak): new assertion to diff --git a/ext/dl/dl.h b/ext/dl/dl.h index 90e2131ee2..d0a461f921 100644 --- a/ext/dl/dl.h +++ b/ext/dl/dl.h @@ -155,9 +155,8 @@ typedef struct { char c; LONG_LONG x; } s_long_long; #define ALIGN_FLOAT (sizeof(s_float) - sizeof(float)) #define ALIGN_DOUBLE (sizeof(s_double) - sizeof(double)) -#define DLALIGN(ptr,offset,align) {\ - while( (((unsigned long)((char *)(ptr) + (offset))) % (align)) != 0 ) (offset)++;\ -} +#define DLALIGN(ptr,offset,align) \ + ((offset) += ((align) - ((uintptr_t)((char *)(ptr) + (offset))) % (align)) % (align)) #define DLTYPE_VOID 0