This change is intended to improve language bindings by turning <field> and <field>_size in a struct into a single array object. I had wanted to just turn it into a GByteArray embedded in the struct, but this caused gjs to segfault. The docs suggest a GByteArray should be allocated with g_byte_array_new(), so I did that and it worked fine. I guess something somewhere assumes it's an allocated object.
Incidentally, the perl bindings segfault attempting to access the array either way. At this stage I suspect the perl bindings rather than my code. Valgrind shows nothing untoward happening before the crash, and the memory when inspected with gdb contains exactly what is expected. --- generator/generator_gobject.ml | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) diff --git a/generator/generator_gobject.ml b/generator/generator_gobject.ml index 2b151c6..4779f23 100644 --- a/generator/generator_gobject.ml +++ b/generator/generator_gobject.ml @@ -204,8 +204,7 @@ let generate_gobject_header_structs () = | n, FString -> pr " gchar *%s;\n" n | n, FBuffer -> - pr " guint8 *%s;\n" n; - pr " guint32 %s_size;\n" n + pr " GByteArray *%s;\n" n | n, FUUID -> pr " /* The next field is NOT nul-terminated, be careful when printing it: */\n"; pr " gchar %s[32];\n" n @@ -811,9 +810,10 @@ let generate_gobject_c_methods () = indent src n dst n src n | n, FBuffer -> pr "%sif (%s%s) {\n" indent src n; - pr "%s memcpy(%s%s, %s%s, %s%s_len);\n" + pr "%s %s%s = g_byte_array_sized_new(%s%s_len);\n" + indent dst n src n; + pr "%s g_byte_array_append(%s%s, %s%s, %s%s_len);\n" indent dst n src n src n; - pr "%s %s%s_size = %s%s_len;\n" indent dst n src n; pr "%s}\n" indent ) (cols_of_struct typ) in -- 1.7.7.5 _______________________________________________ Libguestfs mailing list Libguestfs@redhat.com https://www.redhat.com/mailman/listinfo/libguestfs