summaryrefslogtreecommitdiffstats
path: root/Mac
diff options
context:
space:
mode:
authorJack Jansen <jack.jansen@cwi.nl>2002-07-22 12:35:22 (GMT)
committerJack Jansen <jack.jansen@cwi.nl>2002-07-22 12:35:22 (GMT)
commit603e76e882d6cf660c205bc98d994f92293c2247 (patch)
tree8879422b3680ea2bee696108a2293e1efa9bd34a /Mac
parent66e794d74372ee43c027adc808d57734d102a2a1 (diff)
downloadcpython-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.c22
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);