diff options
Diffstat (limited to 'giscanner/scannerparser.y')
-rw-r--r-- | giscanner/scannerparser.y | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/giscanner/scannerparser.y b/giscanner/scannerparser.y index db3aef1f..abfbe065 100644 --- a/giscanner/scannerparser.y +++ b/giscanner/scannerparser.y @@ -1508,8 +1508,14 @@ object_macro_define : object_macro constant_expression { if ($2->const_int_set || $2->const_boolean_set || $2->const_double_set || $2->const_string != NULL) { - $2->ident = $1; - gi_source_scanner_add_symbol (scanner, $2); + GISourceSymbol *macro = gi_source_symbol_copy ($2); + g_free (macro->ident); + macro->ident = $1; + gi_source_scanner_add_symbol (scanner, macro); + gi_source_symbol_unref (macro); + gi_source_symbol_unref ($2); + } else { + g_free ($1); gi_source_symbol_unref ($2); } } |