diff options
author | axel <axel@liljencrantz.se> | 2006-10-30 07:09:11 +1000 |
---|---|---|
committer | axel <axel@liljencrantz.se> | 2006-10-30 07:09:11 +1000 |
commit | f83575f08447e91d9c26f3e9ff302b428b2c14a9 (patch) | |
tree | 7d65bf8e070d2c3965fe3094838b926fec69d754 /parse_util.c | |
parent | a6c00ca0d289f7305b1fe40ae8d0fbc55ac0a417 (diff) |
Make sure signals aren't blocked while autoloading, also add a few consistency checks to see that signals aren't blocked in critical places
darcs-hash:20061029210911-ac50b-50bec85c3d59d0332ba44f3ece1a012cdc3e8c4b.gz
Diffstat (limited to 'parse_util.c')
-rw-r--r-- | parse_util.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/parse_util.c b/parse_util.c index af4b20c5..3e939bd9 100644 --- a/parse_util.c +++ b/parse_util.c @@ -685,6 +685,8 @@ int parse_util_load( const wchar_t *cmd, CHECK( path_var_name, 0 ); CHECK( cmd, 0 ); + CHECK_BLOCK( 0 ); + // debug( 0, L"Autoload %ls in %ls", cmd, path_var_name ); parse_util_autounload( path_var_name, cmd, on_load ); @@ -724,7 +726,6 @@ int parse_util_load( const wchar_t *cmd, */ if( wcscmp( path_var, loaded->old_path ) != 0 ) { - debug( 0, L"path change, new path is %ls", path_var ); parse_util_load_reset( path_var_name, on_load); reload = parse_util_load( cmd, path_var_name, on_load, reload ); return reload; @@ -779,11 +780,15 @@ int parse_util_load( const wchar_t *cmd, res = parse_util_load_internal( cmd, on_load, reload, loaded, path_list ); - /** - Cleanup - */ - hash_remove( &loaded->is_loading, cmd, 0, 0 ); - + autoload_t *loaded2 = (autoload_t *)hash_get( all_loaded, path_var_name ); + if( loaded2 == loaded ) + { + /** + Cleanup + */ + hash_remove( &loaded->is_loading, cmd, 0, 0 ); + } + c2 = al_get_count( path_list ); al_foreach( path_list, &free ); |