OSDN Git Service

2005-09-04 Andrew Pinski <pinskia@physics.uc.edu>
authorpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 4 Sep 2005 17:05:39 +0000 (17:05 +0000)
committerpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 4 Sep 2005 17:05:39 +0000 (17:05 +0000)
            Rasmus Hahn  <rassahah@neofonie.de>

        PR libobjc/23108
        * objc.dg/type-stream-1.m: New test.

2005-09-04  Andrew Pinski  <pinskia@physics.uc.edu>
            Rasmus Hahn  <rassahah@neofonie.de>

        PR libobjc/23108
        * archive.c (objc_write_type): Correct the element offset.
        (objc_read_type): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@103832 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/testsuite/ChangeLog
gcc/testsuite/objc.dg/type-stream-1.m [new file with mode: 0644]
libobjc/ChangeLog
libobjc/archive.c

index c849daa..d9a5e53 100644 (file)
@@ -1,3 +1,9 @@
+2005-09-04  Andrew Pinski  <pinskia@physics.uc.edu>
+            Rasmus Hahn  <rassahah@neofonie.de>
+
+       PR libobjc/23108
+       * objc.dg/type-stream-1.m: New test.
+
 2005-09-04  Tobias Schl"uter  <tobias.shclueter@physik.uni-muenchen.de>
 
        PR fortran/23661
diff --git a/gcc/testsuite/objc.dg/type-stream-1.m b/gcc/testsuite/objc.dg/type-stream-1.m
new file mode 100644 (file)
index 0000000..edc04e6
--- /dev/null
@@ -0,0 +1,25 @@
+/* { dg-options "-fgnu-runtime" } */
+/* { dg-do run } */
+#include <objc/typedstream.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+int main (void)
+{
+  FILE *f; TypedStream *ts;
+  struct T { int a, b; } x = { 1, 2 };
+  f = fopen ("foo", "w"); ts = objc_open_typed_stream (f, OBJC_WRITEONLY);
+  objc_write_type (ts, @encode(struct T), &x);
+  objc_close_typed_stream (ts); fclose (f);
+  f = fopen ("foo", "r"); ts = objc_open_typed_stream (f, OBJC_READONLY);
+  struct T y;
+  objc_read_type (ts, @encode(struct T), &y);
+  if (y.a != 1)
+   abort ();
+  if (y.b != 2)
+   abort ();
+  objc_close_typed_stream (ts); fclose (f);
+  remove ("foo");
+  return 0;
+}
+
index 0161254..81e11cc 100644 (file)
@@ -1,3 +1,10 @@
+2005-09-04  Andrew Pinski  <pinskia@physics.uc.edu>
+            Rasmus Hahn  <rassahah@neofonie.de>
+
+       PR libobjc/23108
+       * archive.c (objc_write_type): Correct the element offset.
+       (objc_read_type): Likewise.
+
 2005-08-17  Kelley Cook  <kcook@gcc.gnu.org>
 
        * All files: Update FSF address.
index eeaf29c..992a696 100644 (file)
@@ -1069,7 +1069,7 @@ objc_write_type (TypedStream *stream, const char *type, const void *data)
       while (*type != _C_STRUCT_E)
        {
          align = objc_alignof_type (type);       /* padd to alignment */
-         acc_size += ROUND (acc_size, align);
+         acc_size = ROUND (acc_size, align);
          objc_write_type (stream, type, ((char *) data) + acc_size);
          acc_size += objc_sizeof_type (type);   /* add component size */
          type = objc_skip_typespec (type);      /* skip component */
@@ -1165,7 +1165,7 @@ objc_read_type(TypedStream *stream, const char *type, void *data)
       while (*type != _C_STRUCT_E)
        {
          align = objc_alignof_type (type);       /* padd to alignment */
-         acc_size += ROUND (acc_size, align);
+         acc_size = ROUND (acc_size, align);
          objc_read_type (stream, type, ((char*)data)+acc_size);
          acc_size += objc_sizeof_type (type);   /* add component size */
          type = objc_skip_typespec (type);      /* skip component */