tag 323739 patch
thanks

The attached patch allows mit-scheme to build with gcc 4.0.  Fixes to
obstack.h were backported from the current glibc version.

Thanks,

Matej
diff -ruN -x TAGS -x '*.html' -x 'config.*' 
mit-scheme-7.7.90/src/microcode/obstack.h 
mit-scheme-7.7.90.mv/src/microcode/obstack.h
--- mit-scheme-7.7.90/src/microcode/obstack.h   2002-11-26 06:32:30.000000000 
+0100
+++ mit-scheme-7.7.90.mv/src/microcode/obstack.h        2005-09-08 
21:01:59.000000000 +0200
@@ -280,19 +280,24 @@
 #define obstack_ptr_grow(OBSTACK,datum)                                        
\
 ({ struct obstack *__o = (OBSTACK);                                    \
    ((__o->next_free + sizeof (void *) > __o->chunk_limit)              \
-    ? _obstack_newchunk (__o, sizeof (void *)) : 0),                   \
-   *((void **)__o->next_free)++ = ((void *)datum);                     \
+    ? _obstack_newchunk (__o, sizeof (void *)) : 0);                   \
+   *(const void **) __o->next_free = (datum);                          \
+   __o->next_free += sizeof (const void *);                            \
    (void) 0; })
 
 #define obstack_int_grow(OBSTACK,datum)                                        
\
 ({ struct obstack *__o = (OBSTACK);                                    \
    ((__o->next_free + sizeof (int) > __o->chunk_limit)                 \
-    ? _obstack_newchunk (__o, sizeof (int)) : 0),                      \
-   *((int *)__o->next_free)++ = ((int)datum);                          \
+    ? _obstack_newchunk (__o, sizeof (int)) : 0);                      \
+   *(int *) __o->next_free = (datum);                                  \
+   __o->next_free += sizeof (int);                                     \
    (void) 0; })
 
-#define obstack_ptr_grow_fast(h,aptr) (*((void **)(h)->next_free)++ = (void 
*)aptr)
-#define obstack_int_grow_fast(h,aint) (*((int *)(h)->next_free)++ = (int)aint)
+#define obstack_ptr_grow_fast(h,aptr)                                  \
+  (((const void **) ((h)->next_free += sizeof (void *)))[-1] = (aptr))
+
+#define obstack_int_grow_fast(h,aint)                                  \
+  (((int *) ((h)->next_free += sizeof (int)))[-1] = (aint))
 
 #define obstack_blank(OBSTACK,length)                                  \
 ({ struct obstack *__o = (OBSTACK);                                    \
@@ -374,8 +379,11 @@
    ? (_obstack_newchunk ((h), sizeof (int)), 0) : 0),                  \
   *((int *)(((h)->next_free+=sizeof(int))-sizeof(int))) = ((int)datum))
 
-#define obstack_ptr_grow_fast(h,aptr) (*((char **)(h)->next_free)++ = (char 
*)aptr)
-#define obstack_int_grow_fast(h,aint) (*((int *)(h)->next_free)++ = (int)aint)
+#define obstack_ptr_grow_fast(h,aptr)                                  \
+  (((const void **) ((h)->next_free += sizeof (void *)))[-1] = (aptr))
+
+#define obstack_int_grow_fast(h,aint)                                  \
+  (((int *) ((h)->next_free += sizeof (int)))[-1] = (aint))
 
 #define obstack_blank(h,length)                                                
\
 ( (h)->temp = (length),                                                        
\
diff -ruN -x TAGS -x '*.html' -x 'config.*' 
mit-scheme-7.7.90/src/microcode/uxio.c mit-scheme-7.7.90.mv/src/microcode/uxio.c
--- mit-scheme-7.7.90/src/microcode/uxio.c      2003-03-25 02:09:20.000000000 
+0100
+++ mit-scheme-7.7.90.mv/src/microcode/uxio.c   2005-09-08 21:04:59.000000000 
+0200
@@ -240,7 +240,7 @@
   return ((scr < 0) ? 0 : scr);
 }
 
-#ifdef _POSIX
+#ifdef __STDC__
 #include <string.h>
 #else
 extern int EXFUN (strlen, (CONST char *));

Reply via email to