diff --git a/girmodule.c b/girmodule.c index 05c8987fc..e3897c34d 100644 --- a/girmodule.c +++ b/girmodule.c @@ -279,8 +279,9 @@ add_directory_index_section (guint8 *data, GIrModule *module, guint32 *offset2) alloc_section (data, GI_SECTION_DIRECTORY_INDEX, *offset2); required_size = _gi_typelib_hash_builder_get_buffer_size (dirindex_builder); + required_size = ALIGN_VALUE (required_size, 4); - new_offset = *offset2 + ALIGN_VALUE (required_size, 4); + new_offset = *offset2 + required_size; data = g_realloc (data, new_offset); diff --git a/gthash.c b/gthash.c index ecc3b1040..831c87e97 100644 --- a/gthash.c +++ b/gthash.c @@ -158,6 +158,8 @@ _gi_typelib_hash_builder_pack (GITypelibHashBuilder *builder, guint8* mem, guint g_assert (len >= builder->packed_size); g_assert ((((unsigned long)mem) & 0x3) == 0); + memset (mem, 0, len); + *((guint32*) mem) = builder->dirmap_offset; packed_mem = (guint8*)(mem + sizeof(guint32)); cmph_pack (builder->c, packed_mem);