aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2010-08-12 11:59:35 +1000
committerSteve Bennett <steveb@workware.net.au>2010-10-15 11:02:49 +1000
commit996d95360266ca6d0d6ef5e1d589d55b8dbf8a58 (patch)
tree9e888871d785af6efb715d6c04b89f3d6551d2f8
parent4eeb22d1eee2a3db6b852c785b8ce8de84ec6154 (diff)
downloadjimtcl-996d95360266ca6d0d6ef5e1d589d55b8dbf8a58.zip
jimtcl-996d95360266ca6d0d6ef5e1d589d55b8dbf8a58.tar.gz
jimtcl-996d95360266ca6d0d6ef5e1d589d55b8dbf8a58.tar.bz2
Minor compiler compatibility fixes and ref count fix
Don't mix declarations and code Don't try sizeof(long long) if we don't have it Object not freed on bad printf modifier in [format] Signed-off-by: Steve Bennett <steveb@workware.net.au>
-rw-r--r--jim-bio.c3
-rw-r--r--jim.c17
2 files changed, 13 insertions, 7 deletions
diff --git a/jim-bio.c b/jim-bio.c
index c477116..044fc22 100644
--- a/jim-bio.c
+++ b/jim-bio.c
@@ -58,6 +58,7 @@ static int bio_cmd_read(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
int hex = 0;
int total = 0;
FILE *fh;
+ Jim_Obj *result;
if (Jim_CompareStringImmediate(interp, argv[0], "-hex")) {
hex++;
@@ -78,7 +79,7 @@ static int bio_cmd_read(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
return JIM_ERR;
}
- Jim_Obj *result = Jim_NewStringObj(interp, "", 0);
+ result = Jim_NewStringObj(interp, "", 0);
/* Read one char at a time */
while (len > 0) {
diff --git a/jim.c b/jim.c
index 906f0dd..3a7ac0e 100644
--- a/jim.c
+++ b/jim.c
@@ -2407,13 +2407,13 @@ static Jim_Obj *Jim_FormatString_Inner(Jim_Interp *interp, Jim_Obj *fmtObjPtr,
case 'u':
case 'x':
case 'X':
+ *cp++ = 'l';
+#ifdef HAVE_LONG_LONG
/* jim widevaluse are 64bit */
if (sizeof(jim_wide) == sizeof(long long)) {
*cp++ = 'l';
- *cp++ = 'l';
- } else {
- *cp++ = 'l';
}
+#endif
*cp++ = *fmt;
*cp = 0;
if (Jim_GetWide(interp, objv[0], &wideValue) == JIM_ERR) {
@@ -2430,6 +2430,7 @@ static Jim_Obj *Jim_FormatString_Inner(Jim_Interp *interp, Jim_Obj *fmtObjPtr,
default:
spec[0] = *fmt; spec[1] = '\0';
Jim_SetResultFormatted(interp, "bad field specifier \"%s\"", spec);
+ Jim_FreeNewObj(interp, resObjPtr);
return NULL;
}
/* force terminate */
@@ -4814,6 +4815,7 @@ void UpdateStringOfInt(struct Jim_Obj *objPtr)
int SetIntFromAny(Jim_Interp *interp, Jim_Obj *objPtr, int flags)
{
jim_wide wideValue;
+ const char *str;
if (objPtr->typePtr == &coercedDoubleObjType) {
/* Simple switcheroo */
@@ -4822,7 +4824,7 @@ int SetIntFromAny(Jim_Interp *interp, Jim_Obj *objPtr, int flags)
}
/* Get the string representation */
- const char *str = Jim_GetString(objPtr, NULL);
+ str = Jim_GetString(objPtr, NULL);
/* Try to convert into a jim_wide */
if (Jim_StringToWide(str, &wideValue, 0) != JIM_OK) {
if (flags & JIM_ERRMSG) {
@@ -4942,6 +4944,7 @@ int SetDoubleFromAny(Jim_Interp *interp, Jim_Obj *objPtr)
*/
str = Jim_GetString(objPtr, NULL);
+#ifdef HAVE_LONG_LONG
/* Assume a 53 bit mantissa */
#define MIN_INT_IN_DOUBLE -(1LL << 53)
#define MAX_INT_IN_DOUBLE -(MIN_INT_IN_DOUBLE + 1)
@@ -4956,7 +4959,9 @@ int SetDoubleFromAny(Jim_Interp *interp, Jim_Obj *objPtr)
objPtr->typePtr = &coercedDoubleObjType;
return JIM_OK;
}
- else if (Jim_StringToWide(str, &wideValue, 10) == JIM_OK) {
+ else
+#endif
+ if (Jim_StringToWide(str, &wideValue, 10) == JIM_OK) {
/* Managed to convert to an int, so we can use this as a cooerced double */
Jim_FreeIntRep(interp, objPtr);
objPtr->typePtr = &coercedDoubleObjType;
@@ -10719,8 +10724,8 @@ wrongargs:
listlen = Jim_ListLength(interp, argv[0]);
for (i = 0; i < listlen; i++) {
Jim_Obj *objPtr;
- Jim_ListIndex(interp, argv[0], i, &objPtr, JIM_NONE);
int eq = 0;
+ Jim_ListIndex(interp, argv[0], i, &objPtr, JIM_NONE);
switch (opt_match) {
case OPT_EXACT:
eq = Jim_StringEqObj(objPtr, argv[1], opt_nocase);