diff options
Diffstat (limited to 'plugins/dalvik/pseudo')
-rw-r--r-- | plugins/dalvik/pseudo/fill.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/plugins/dalvik/pseudo/fill.c b/plugins/dalvik/pseudo/fill.c index 9820348..92178d9 100644 --- a/plugins/dalvik/pseudo/fill.c +++ b/plugins/dalvik/pseudo/fill.c @@ -177,6 +177,7 @@ GArchInstruction *g_dalvik_fill_instr_new(uint16_t ident, GDalvikContext *ctx, c { GDalvikFillInstr *result; /* Structure à retourner */ phys_t consumed; /* Données consommées */ + vmpa2t padding; /* Emplacement d'un bourrage */ assert(ident == DPO_FILL_ARRAY_DATA); @@ -195,6 +196,24 @@ GArchInstruction *g_dalvik_fill_instr_new(uint16_t ident, GDalvikContext *ctx, c if (!g_dalvik_context_register_array_data(ctx, pos, result->item_width, consumed)) goto gdfin_bad; + if (consumed % sizeof(uint16_t) != 0) + { + copy_vmpa(&padding, pos); + advance_vmpa(&padding, consumed); + + if (!g_dalvik_context_register_array_data_padding(ctx, &padding)) + { + /** + * Si on a pu prendre le premier verrou, on devrait avoir l'assurance + * de prendre le second ! + */ + assert(false); + } + + + + } + return G_ARCH_INSTRUCTION(result); gdfin_bad: |