diff options
| author | Cyrille Bagard <nocbos@gmail.com> | 2018-05-12 09:53:02 (GMT) | 
|---|---|---|
| committer | Cyrille Bagard <nocbos@gmail.com> | 2018-05-12 09:53:02 (GMT) | 
| commit | 9f1fbd9d729056b624edea563b4cab8e58128b52 (patch) | |
| tree | 2923f51ecc9cbf86bcd8af7bb96b213c0fee7c3a | |
| parent | eaf46c79d5b1db06f1f1f7da17a37ec007af2d92 (diff) | |
Fixed some memory leaks.
| -rw-r--r-- | plugins/arm/v7/operands/reglist.c | 7 | ||||
| -rw-r--r-- | plugins/dalvik/operands/register.c | 4 | ||||
| -rw-r--r-- | src/arch/register.c | 4 | 
3 files changed, 14 insertions, 1 deletions
| diff --git a/plugins/arm/v7/operands/reglist.c b/plugins/arm/v7/operands/reglist.c index 9fe9245..5fc1f08 100644 --- a/plugins/arm/v7/operands/reglist.c +++ b/plugins/arm/v7/operands/reglist.c @@ -120,6 +120,8 @@ static void g_armv7_reglist_operand_class_init(GArmV7RegListOperandClass *klass)  static void g_armv7_reglist_operand_init(GArmV7RegListOperand *operand)  { +    operand->registers = NULL; +    operand->count = 0;  } @@ -138,6 +140,11 @@ static void g_armv7_reglist_operand_init(GArmV7RegListOperand *operand)  static void g_armv7_reglist_operand_dispose(GArmV7RegListOperand *operand)  { +    size_t i;                               /* Boucle de parcours          */ + +    for (i = 0; i < operand->count; i++) +        g_object_unref(G_OBJECT(operand->registers[i])); +      G_OBJECT_CLASS(g_armv7_reglist_operand_parent_class)->dispose(G_OBJECT(operand));  } diff --git a/plugins/dalvik/operands/register.c b/plugins/dalvik/operands/register.c index 71da97f..d2dd174 100644 --- a/plugins/dalvik/operands/register.c +++ b/plugins/dalvik/operands/register.c @@ -116,6 +116,7 @@ static void g_dalvik_register_operand_class_init(GDalvikRegisterOperandClass *kl  static void g_dalvik_register_operand_init(GDalvikRegisterOperand *operand)  { +    operand->reg = NULL;      operand->is_written = false;  } @@ -135,6 +136,9 @@ static void g_dalvik_register_operand_init(GDalvikRegisterOperand *operand)  static void g_dalvik_register_operand_dispose(GDalvikRegisterOperand *operand)  { +    if (operand->reg != NULL) +        g_object_unref(G_OBJECT(operand->reg)); +      G_OBJECT_CLASS(g_dalvik_register_operand_parent_class)->dispose(G_OBJECT(operand));  } diff --git a/src/arch/register.c b/src/arch/register.c index 6194a28..0033071 100644 --- a/src/arch/register.c +++ b/src/arch/register.c @@ -321,6 +321,7 @@ static void g_register_operand_class_init(GRegisterOperandClass *klass)  static void g_register_operand_init(GRegisterOperand *operand)  { +    operand->reg = NULL;      operand->is_written = false;  } @@ -340,7 +341,8 @@ static void g_register_operand_init(GRegisterOperand *operand)  static void g_register_operand_dispose(GRegisterOperand *operand)  { -    g_object_unref(G_OBJECT(operand->reg)); +    if (operand->reg != NULL) +        g_object_unref(G_OBJECT(operand->reg));      G_OBJECT_CLASS(g_register_operand_parent_class)->dispose(G_OBJECT(operand)); | 
