summaryrefslogtreecommitdiff
path: root/plugins/dalvik/pseudo/fill.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/dalvik/pseudo/fill.c')
-rw-r--r--plugins/dalvik/pseudo/fill.c19
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: