Commit 2c6cf972 authored by Jack Jansen's avatar Jack Jansen

Handling of defaultLocation argument was wrong, causing a crash when used. Fixed.

parent 3d6163ad
...@@ -147,6 +147,7 @@ filldialogoptions(PyObject *d, ...@@ -147,6 +147,7 @@ filldialogoptions(PyObject *d,
int pos = 0; int pos = 0;
PyObject *key, *value; PyObject *key, *value;
char *keystr; char *keystr;
AEDesc *defaultLocation_storage;
NavGetDefaultDialogOptions(opt); NavGetDefaultDialogOptions(opt);
...@@ -157,8 +158,15 @@ filldialogoptions(PyObject *d, ...@@ -157,8 +158,15 @@ filldialogoptions(PyObject *d,
} }
keystr = PyString_AsString(key); keystr = PyString_AsString(key);
if( strcmp(keystr, "defaultLocation") == 0 ) { if( strcmp(keystr, "defaultLocation") == 0 ) {
if ( !PyArg_Parse(value, "O&", AEDesc_Convert, defaultLocationP) ) if ( (defaultLocation_storage = PyMem_NEW(AEDesc, 1)) == NULL ) {
PyErr_NoMemory();
return 0; return 0;
}
if ( !PyArg_Parse(value, "O&", AEDesc_Convert, defaultLocation_storage) ) {
PyMem_DEL(defaultLocation_storage);
return 0;
}
*defaultLocationP = defaultLocation_storage;
} else if( strcmp(keystr, "version") == 0 ) { } else if( strcmp(keystr, "version") == 0 ) {
if ( !PyArg_Parse(value, "h", &opt->version) ) if ( !PyArg_Parse(value, "h", &opt->version) )
return 0; return 0;
...@@ -435,6 +443,7 @@ nav_NavGetFile(self, args, kw) ...@@ -435,6 +443,7 @@ nav_NavGetFile(self, args, kw)
return NULL; return NULL;
err = NavGetFile(defaultLocation, &reply, &dialogOptions, err = NavGetFile(defaultLocation, &reply, &dialogOptions,
eventProc, previewProc, filterProc, typeList, (void *)dict); eventProc, previewProc, filterProc, typeList, (void *)dict);
PyMem_XDEL(defaultLocation);
if ( err ) { if ( err ) {
PyErr_Mac(ErrorObject, err); PyErr_Mac(ErrorObject, err);
return NULL; return NULL;
...@@ -471,6 +480,7 @@ nav_NavPutFile(self, args, kw) ...@@ -471,6 +480,7 @@ nav_NavPutFile(self, args, kw)
return NULL; return NULL;
err = NavPutFile(defaultLocation, &reply, &dialogOptions, err = NavPutFile(defaultLocation, &reply, &dialogOptions,
eventProc, fileType, fileCreator, (void *)dict); eventProc, fileType, fileCreator, (void *)dict);
PyMem_XDEL(defaultLocation);
if ( err ) { if ( err ) {
PyErr_Mac(ErrorObject, err); PyErr_Mac(ErrorObject, err);
return NULL; return NULL;
...@@ -606,6 +616,7 @@ nav_NavChooseFile(self, args, kw) ...@@ -606,6 +616,7 @@ nav_NavChooseFile(self, args, kw)
return NULL; return NULL;
err = NavChooseFile(defaultLocation, &reply, &dialogOptions, err = NavChooseFile(defaultLocation, &reply, &dialogOptions,
eventProc, previewProc, filterProc, typeList, (void *)dict); eventProc, previewProc, filterProc, typeList, (void *)dict);
PyMem_XDEL(defaultLocation);
if ( err ) { if ( err ) {
PyErr_Mac(ErrorObject, err); PyErr_Mac(ErrorObject, err);
return NULL; return NULL;
...@@ -641,6 +652,7 @@ nav_NavChooseFolder(self, args, kw) ...@@ -641,6 +652,7 @@ nav_NavChooseFolder(self, args, kw)
return NULL; return NULL;
err = NavChooseFolder(defaultLocation, &reply, &dialogOptions, err = NavChooseFolder(defaultLocation, &reply, &dialogOptions,
eventProc, filterProc, (void *)dict); eventProc, filterProc, (void *)dict);
PyMem_XDEL(defaultLocation);
if ( err ) { if ( err ) {
PyErr_Mac(ErrorObject, err); PyErr_Mac(ErrorObject, err);
return NULL; return NULL;
...@@ -676,6 +688,7 @@ nav_NavChooseVolume(self, args, kw) ...@@ -676,6 +688,7 @@ nav_NavChooseVolume(self, args, kw)
return NULL; return NULL;
err = NavChooseVolume(defaultLocation, &reply, &dialogOptions, err = NavChooseVolume(defaultLocation, &reply, &dialogOptions,
eventProc, filterProc, (void *)dict); eventProc, filterProc, (void *)dict);
PyMem_XDEL(defaultLocation);
if ( err ) { if ( err ) {
PyErr_Mac(ErrorObject, err); PyErr_Mac(ErrorObject, err);
return NULL; return NULL;
...@@ -711,6 +724,7 @@ nav_NavChooseObject(self, args, kw) ...@@ -711,6 +724,7 @@ nav_NavChooseObject(self, args, kw)
return NULL; return NULL;
err = NavChooseObject(defaultLocation, &reply, &dialogOptions, err = NavChooseObject(defaultLocation, &reply, &dialogOptions,
eventProc, filterProc, (void *)dict); eventProc, filterProc, (void *)dict);
PyMem_XDEL(defaultLocation);
if ( err ) { if ( err ) {
PyErr_Mac(ErrorObject, err); PyErr_Mac(ErrorObject, err);
return NULL; return NULL;
...@@ -744,6 +758,7 @@ nav_NavNewFolder(self, args, kw) ...@@ -744,6 +758,7 @@ nav_NavNewFolder(self, args, kw)
if (!filldialogoptions(dict, &defaultLocation, &dialogOptions, &eventProc, NULL, NULL, NULL, NULL, NULL)) if (!filldialogoptions(dict, &defaultLocation, &dialogOptions, &eventProc, NULL, NULL, NULL, NULL, NULL))
return NULL; return NULL;
err = NavNewFolder(defaultLocation, &reply, &dialogOptions, eventProc, (void *)dict); err = NavNewFolder(defaultLocation, &reply, &dialogOptions, eventProc, (void *)dict);
PyMem_XDEL(defaultLocation);
if ( err ) { if ( err ) {
PyErr_Mac(ErrorObject, err); PyErr_Mac(ErrorObject, err);
return NULL; return NULL;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment