summaryrefslogtreecommitdiffstats
path: root/src/bltConfig.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/bltConfig.C')
-rw-r--r--src/bltConfig.C27
1 files changed, 20 insertions, 7 deletions
diff --git a/src/bltConfig.C b/src/bltConfig.C
index b77d502..a5c8bf0 100644
--- a/src/bltConfig.C
+++ b/src/bltConfig.C
@@ -83,6 +83,9 @@
#include "bltInt.h"
+// State
+char* stateObjOption[] = {"normal", "active", "disabled", NULL};
+
// Point
static Tk_CustomOptionSetProc PointSetProc;
static Tk_CustomOptionGetProc PointGetProc;
@@ -209,13 +212,21 @@ static Tcl_Obj* DashesGetProc(ClientData clientData, Tk_Window tkwin,
{
Blt_Dashes* dashesPtr = (Blt_Dashes*)(widgRec + offset);
- Tcl_Obj* ll[12];
- int ii=0;
- while (dashesPtr->values[ii]) {
+ // count how many
+ int cnt =0;
+ while (dashesPtr->values[cnt])
+ cnt++;
+
+ if (!cnt)
+ return Tcl_NewListObj(0, (Tcl_Obj**)NULL);
+
+ Tcl_Obj** ll = calloc(cnt, sizeof(Tcl_Obj*));
+ for (int ii=0; ii<cnt; ii++)
ll[ii] = Tcl_NewIntObj(dashesPtr->values[ii]);
- ii++;
- }
- return Tcl_NewListObj(ii, ll);
+ Tcl_Obj* listObjPtr = Tcl_NewListObj(cnt, ll);
+ free(ll);
+
+ return listObjPtr;
};
// List
@@ -254,8 +265,10 @@ static Tcl_Obj* ListGetProc(ClientData clientData, Tk_Window tkwin,
// count how many
int cnt=0;
for (const char** p = *listPtr; *p != NULL; p++,cnt++) {}
+ if (!cnt)
+ return Tcl_NewListObj(0, (Tcl_Obj**)NULL);
- Tcl_Obj** ll = calloc(cnt,sizeof(Tcl_Obj*));
+ Tcl_Obj** ll = calloc(cnt, sizeof(Tcl_Obj*));
for (int ii=0; ii<cnt; ii++)
ll[ii] = Tcl_NewStringObj(*listPtr[ii], -1);
Tcl_Obj* listObjPtr = Tcl_NewListObj(cnt, ll);