diff options
author | Jack Jansen <jack.jansen@cwi.nl> | 2002-07-22 12:35:22 (GMT) |
---|---|---|
committer | Jack Jansen <jack.jansen@cwi.nl> | 2002-07-22 12:35:22 (GMT) |
commit | 603e76e882d6cf660c205bc98d994f92293c2247 (patch) | |
tree | 8879422b3680ea2bee696108a2293e1efa9bd34a /Mac | |
parent | 66e794d74372ee43c027adc808d57734d102a2a1 (diff) | |
download | cpython-603e76e882d6cf660c205bc98d994f92293c2247.zip cpython-603e76e882d6cf660c205bc98d994f92293c2247.tar.gz cpython-603e76e882d6cf660c205bc98d994f92293c2247.tar.bz2 |
Fixed potential refcount problems with interned strings, adapted comments, added a bit more trace output if verbose > 1.
Diffstat (limited to 'Mac')
-rw-r--r-- | Mac/Python/macimport.c | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/Mac/Python/macimport.c b/Mac/Python/macimport.c index cc562f1..56bda1f 100644 --- a/Mac/Python/macimport.c +++ b/Mac/Python/macimport.c @@ -68,7 +68,7 @@ findnamedresource( Handle h; /* - ** If we have interning find_module takes care of interning all + ** Find_module takes care of interning all ** sys.path components. We then keep a record of all sys.path ** components for which GetFInfo has failed (usually because the ** component in question is a folder), and we don't try opening these @@ -85,9 +85,13 @@ findnamedresource( return 0; } if ( FSMakeFSSpec(0, 0, Pstring(filename), &fss) != noErr ) { - if ( obj && max_not_a_file < MAXPATHCOMPONENTS && obj->ob_sinterned ) + /* doesn't exist or is folder */ + if ( obj && max_not_a_file < MAXPATHCOMPONENTS && obj->ob_sinterned ) { + Py_INCREF(obj); not_a_file[max_not_a_file++] = obj; - /* doesn't exist or is folder */ + if (Py_VerboseFlag > 1) + PySys_WriteStderr("# %s is not a file\n", filename); + } return 0; } if ( fssequal(&fss, &PyMac_ApplicationFSSpec) ) { @@ -100,10 +104,14 @@ findnamedresource( UseResFile(PyMac_AppRefNum); filerh = -1; } else { - if ( FSpGetFInfo(&fss, &finfo) != noErr ) { - if ( obj && max_not_a_file < MAXPATHCOMPONENTS && obj->ob_sinterned ) + if ( FSpGetFInfo(&fss, &finfo) != noErr ) { + /* doesn't exist or is folder */ + if ( obj && max_not_a_file < MAXPATHCOMPONENTS && obj->ob_sinterned ) { + Py_INCREF(obj); not_a_file[max_not_a_file++] = obj; - /* doesn't exist or is folder */ + if (Py_VerboseFlag > 1) + PySys_WriteStderr("# %s is not a file\n", filename); + } return 0; } oldrh = CurResFile(); @@ -114,6 +122,8 @@ findnamedresource( } if ( dataptr == NULL ) SetResLoad(0); + if (Py_VerboseFlag > 1) + PySys_WriteStderr("# Look for ('PYC ', %s) in %s\n", module, filename); h = Get1NamedResource(restype, Pstring(module)); SetResLoad(1); ok = (h != NULL); |