From: <bor...@us...> - 2022-10-06 12:04:57
|
Revision: 3785 http://sourceforge.net/p/ftm/code/3785 Author: borghesi Date: 2022-10-06 12:04:54 +0000 (Thu, 06 Oct 2022) Log Message: ----------- maxpat.c: added check of ext as still alive oject (using NOGOOD), to avoid crash in check_external_scopes function Modified Paths: -------------- trunk/ftm/ftmlib/max5/maxpat.c Modified: trunk/ftm/ftmlib/max5/maxpat.c =================================================================== --- trunk/ftm/ftmlib/max5/maxpat.c 2022-10-05 22:00:45 UTC (rev 3784) +++ trunk/ftm/ftmlib/max5/maxpat.c 2022-10-06 12:04:54 UTC (rev 3785) @@ -679,31 +679,34 @@ /* get scope with unresolved Max patcher */ ext = (ftmext_t *)fts_get_pointer(&k); - ext_scope = ftmext_get_scope(ext); - toplevel = maxpat_get_toplevel(ext->head.patcher); - scope = toplevel_lookup_scope(toplevel); + if(!NOGOOD(ext)) + { + ext_scope = ftmext_get_scope(ext); + toplevel = maxpat_get_toplevel(ext->head.patcher); + scope = toplevel_lookup_scope(toplevel); - if(scope != ext_scope) - { - t_object *ext_scope_toplevel = fts_scope_get_reference(ext_scope); - t_object *fix_patcher = toplevel; + if(scope != ext_scope) + { + t_object *ext_scope_toplevel = fts_scope_get_reference(ext_scope); + t_object *fix_patcher = toplevel; - if(scope == NULL) - { - scope = scope_new(); - fts_scope_set_reference(scope, toplevel); - toplevel_register_scope(toplevel, scope); - } + if(scope == NULL) + { + scope = scope_new(); + fts_scope_set_reference(scope, toplevel); + toplevel_register_scope(toplevel, scope); + } - debug_post("--> fix scope of %s from %p (%s) to %p (%s) for toplevel %p)", ftmext_get_class_name(ext)->s_name, ext_scope, patcher_get_filename(ext_scope_toplevel)->s_name, scope, patcher_get_filename(toplevel)->s_name, toplevel); - maxpat_fix_scope(ext, scope); + debug_post("--> fix scope of %s from %p (%s) to %p (%s) for toplevel %p)", ftmext_get_class_name(ext)->s_name, ext_scope, patcher_get_filename(ext_scope_toplevel)->s_name, scope, patcher_get_filename(toplevel)->s_name, toplevel); + maxpat_fix_scope(ext, scope); - if(patcher_is_parent_of(toplevel, ext_scope_toplevel)) - fix_patcher = ext_scope_toplevel; + if(patcher_is_parent_of(toplevel, ext_scope_toplevel)) + fix_patcher = ext_scope_toplevel; - fts_set_symbol(&k, patcher_get_filepath(fix_patcher)); - fts_set_pointer(&v, fix_patcher); - fts_hashtable_put(&maxpat_fixfile_hash, &k, &v); + fts_set_symbol(&k, patcher_get_filepath(fix_patcher)); + fts_set_pointer(&v, fix_patcher); + fts_hashtable_put(&maxpat_fixfile_hash, &k, &v); + } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |