Create copy of integer declaration before applying base-16 for pointers
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Sat, 14 May 2011 05:35:44 +0000 (01:35 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Sat, 14 May 2011 05:35:44 +0000 (01:35 -0400)
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
formats/ctf/metadata/ctf-visitor-generate-io-struct.c

index 7688f5f1f3cd27470420770139b58b7c9d0fdc3f..507233c97cdf3b4fbdf4ce8e24548be2a8fb6967 100644 (file)
@@ -317,8 +317,17 @@ struct declaration *ctf_type_declarator_visit(FILE *fd, int depth,
                                struct declaration_integer *integer_declaration =
                                        container_of(nested_declaration, struct declaration_integer, p);
                                /* For base to 16 for pointers (expected pretty-print) */
-                               if (!integer_declaration->base)
-                                       integer_declaration->base = 16;
+                               if (!integer_declaration->base) {
+                                       /*
+                                        * We need to do a copy of the
+                                        * integer declaration to modify it. There could be other references to
+                                        * it.
+                                        */
+                                       integer_declaration = integer_declaration_new(integer_declaration->len,
+                                               integer_declaration->byte_order, integer_declaration->signedness,
+                                               integer_declaration->p.alignment, 16);
+                                       nested_declaration = &integer_declaration->p;
+                               }
                        }
                } else {
                        nested_declaration = ctf_type_specifier_list_visit(fd, depth,
This page took 0.025642 seconds and 4 git commands to generate.