summaryrefslogtreecommitdiff
path: root/src/im_format.cpp
diff options
context:
space:
mode:
authorscuri <scuri>2009-11-23 17:11:42 +0000
committerscuri <scuri>2009-11-23 17:11:42 +0000
commit50c8a0c91a1dd2fad6f6c7f86283f0dc9760a29e (patch)
treea60137d4542c0e54ff22cfb5e5245b506a5decae /src/im_format.cpp
parent9cc6fd6da62bc239bf22ced6ae24c0ffdd994b40 (diff)
Fixed: memory leak in imFileOpen.
Diffstat (limited to 'src/im_format.cpp')
-rw-r--r--src/im_format.cpp23
1 files changed, 18 insertions, 5 deletions
diff --git a/src/im_format.cpp b/src/im_format.cpp
index d389743..ad04a3b 100644
--- a/src/im_format.cpp
+++ b/src/im_format.cpp
@@ -2,7 +2,7 @@
* \brief File Format Access
*
* See Copyright Notice in im_lib.h
- * $Id: im_format.cpp,v 1.2 2008/12/03 15:45:34 scuri Exp $
+ * $Id: im_format.cpp,v 1.3 2009/11/23 17:13:05 scuri Exp $
*/
@@ -194,7 +194,7 @@ imFileFormatBase* imFileFormatBaseOpen(const char* file_name, int *error)
imFileFormatBase* ifileformat = iformat->Create();
*error = ifileformat->Open(file_name);
if (*error != IM_ERR_NONE && *error != IM_ERR_FORMAT) // Error situation that must abort
- { // Only IM_ERR_FORMAT is a valid error here
+ { // Only IM_ERR_FORMAT is considered here
free(extension);
delete [] ext_mark;
delete ifileformat;
@@ -206,6 +206,11 @@ imFileFormatBase* imFileFormatBaseOpen(const char* file_name, int *error)
delete [] ext_mark;
return ifileformat;
}
+ else
+ {
+ /* Other errors, release the format and test another one */
+ delete ifileformat;
+ }
}
}
@@ -233,6 +238,11 @@ imFileFormatBase* imFileFormatBaseOpen(const char* file_name, int *error)
delete [] ext_mark;
return ifileformat;
}
+ else
+ {
+ /* Other errors, release the format and test another one */
+ delete ifileformat;
+ }
}
}
@@ -269,9 +279,12 @@ imFileFormatBase* imFileFormatBaseOpenAs(const char* file_name, const char* form
}
else if (*error == IM_ERR_NONE) // Sucessfully oppened the file
return ifileformat;
-
- *error = IM_ERR_FORMAT;
- return NULL;
+ else
+ {
+ *error = IM_ERR_FORMAT;
+ delete ifileformat;
+ return NULL;
+ }
}
imFileFormatBase* imFileFormatBaseNew(const char* file_name, const char* format, int *error)