py: Free non-interned strings in the parser when not needed.

mp_parse_node_free now frees the memory associated with non-interned
strings.  And the parser calls mp_parse_node_free when discarding a
non-used node (such as a doc string).

Also, the compiler now frees the parse tree explicitly just before it
exits (as opposed to relying on the caller to do this).

Addresses issue #708 as best we can.
This commit is contained in:
Damien George
2014-09-23 15:31:56 +00:00
parent d6230f62c7
commit 52b5d76a6b
9 changed files with 7 additions and 8 deletions

View File

@@ -141,7 +141,6 @@ STATIC void do_load(mp_obj_t module_obj, vstr_t *file) {
// compile the imported script
mp_obj_t module_fun = mp_compile(pn, source_name, MP_EMIT_OPT_NONE, false);
mp_parse_node_free(pn);
if (module_fun == mp_const_none) {
// TODO handle compile error correctly