summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authorhobbs <hobbs>2004-05-03 17:59:21 (GMT)
committerhobbs <hobbs>2004-05-03 17:59:21 (GMT)
commitf8dbd97a90d2b6eb9847a210977421fdfa4379dd (patch)
tree47cb961ee8339a28f3d7b74587de0c03d00d672e /generic
parent04fb9bef829f5b9f5aa1b5bd2f747f4d2efa4a59 (diff)
downloadtk-f8dbd97a90d2b6eb9847a210977421fdfa4379dd.zip
tk-f8dbd97a90d2b6eb9847a210977421fdfa4379dd.tar.gz
tk-f8dbd97a90d2b6eb9847a210977421fdfa4379dd.tar.bz2
* generic/tkImgPhoto.c (ImgPhotoConfigureMaster): force -data into
ByteArray and -format into String to correctly handle them if they have been shimmered or created as some other object type. (ImgPhotoCmd): correctly init matched to 0.
Diffstat (limited to 'generic')
-rw-r--r--generic/tkImgPhoto.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/generic/tkImgPhoto.c b/generic/tkImgPhoto.c
index a969082..eea00ef 100644
--- a/generic/tkImgPhoto.c
+++ b/generic/tkImgPhoto.c
@@ -17,7 +17,7 @@
* Department of Computer Science,
* Australian National University.
*
- * RCS: @(#) $Id: tkImgPhoto.c,v 1.36.2.6 2004/03/26 22:01:26 dkf Exp $
+ * RCS: @(#) $Id: tkImgPhoto.c,v 1.36.2.7 2004/05/03 17:59:21 hobbs Exp $
*/
#include "tkInt.h"
@@ -947,6 +947,7 @@ ImgPhotoCmd(clientData, interp, objc, objv)
}
}
}
+ matched = 0;
if (stringWriteProc == NULL) {
oldformat = 1;
for (imageFormat = tsdPtr->oldFormatList; imageFormat != NULL;
@@ -1954,9 +1955,12 @@ ImgPhotoConfigureMaster(interp, masterPtr, objc, objv, flags)
masterPtr->fileString = NULL;
}
if (data) {
- if (data->length
- || (data->typePtr == Tcl_GetObjType("bytearray")
- && data->internalRep.otherValuePtr != NULL)) {
+ /*
+ * Force into ByteArray format, which most (all) image handlers
+ * will use anyway. Empty length means ignore the -data option.
+ */
+ (void) Tcl_GetByteArrayFromObj(data, &length);
+ if (length) {
Tcl_IncrRefCount(data);
} else {
data = NULL;
@@ -1967,7 +1971,12 @@ ImgPhotoConfigureMaster(interp, masterPtr, objc, objv, flags)
masterPtr->dataString = data;
}
if (format) {
- if (format->length) {
+ /*
+ * Stringify to ignore -format "". It may come in as a list or
+ * other object.
+ */
+ (void) Tcl_GetStringFromObj(format, &length);
+ if (length) {
Tcl_IncrRefCount(format);
} else {
format = NULL;