--- a/mysqltcl.c
+++ b/mysqltcl.c
@@ -378,12 +378,14 @@
static int
mysqlPrimConfl (char* msg)
{
+ const char *resultPtr;
Tcl_SetVar2 (saved_interp, MysqlStatusArr, MYSQL_STATUS_CODE, "-1",
TCL_GLOBAL_ONLY);
Tcl_SetResult (saved_interp, "", TCL_STATIC) ;
Tcl_AppendResult (saved_interp, saved_argv[0], ": ", msg, (char*)NULL) ;
+ resultPtr = Tcl_GetStringResult(saved_interp);
Tcl_SetVar2 (saved_interp, MysqlStatusArr, MYSQL_STATUS_MSG,
- saved_interp->result, TCL_GLOBAL_ONLY);
+ resultPtr, TCL_GLOBAL_ONLY);
mysqlReassemble () ;
return TCL_ERROR ;
}
@@ -400,6 +402,7 @@
mysqlServerConfl (MYSQL *sock)
{
const char *cp;
+ const char *resultPtr;
Tcl_SetVar2 (saved_interp, MysqlStatusArr, MYSQL_STATUS_CODE, "-1",
TCL_GLOBAL_ONLY);
Tcl_SetResult (saved_interp, "", TCL_STATIC) ;
@@ -408,8 +411,9 @@
else cp = NULL;
Tcl_AppendResult (saved_interp, saved_argv[0], "/db server: ",
(cp == NULL) ? "" : cp, (char*)NULL) ;
+ resultPtr = Tcl_GetStringResult(saved_interp);
Tcl_SetVar2 (saved_interp, MysqlStatusArr, MYSQL_STATUS_MSG,
- saved_interp->result, TCL_GLOBAL_ONLY);
+ resultPtr, TCL_GLOBAL_ONLY);
mysqlReassemble () ;
return TCL_ERROR ;
}
@@ -647,7 +651,7 @@
}
break ;
case MYSQL_COL_LENGTH_K:
- sprintf (buf, "%d", fld->length) ;
+ sprintf (buf, "%lu", fld->length) ;
res = buf ;
break ;
#ifdef IS_PRI_KEY
@@ -1072,11 +1076,13 @@
#endif /* TCL_MAJOR_VERSION >= 8 && TCL_MINOR_VERSION >= 2 */
if ((mysqlHandle[hand].result = mysql_store_result(MYSQLCON(hand)))== NULL) {
- (void)strcpy (interp->result, "-1") ;
+ Tcl_SetResult(interp, "-1", TCL_STATIC);
} else {
+ char buf[30];
mysqlHandle[hand].res_count = mysql_num_rows (mysqlHandle[hand].result) ;
mysqlHandle[hand].col_count = mysql_num_fields (mysqlHandle[hand].result) ;
- (void)sprintf (interp->result, "%d", mysqlHandle[hand].res_count) ;
+ (void)sprintf (buf, "%d", mysqlHandle[hand].res_count) ;
+ Tcl_SetResult(interp, buf, TCL_STATIC);
}
return TCL_OK;
}
@@ -1138,7 +1144,11 @@
#endif /* TCL_MAJOR_VERSION >= 8 && TCL_MINOR_VERSION >= 2 */
num_rows = mysql_affected_rows(MYSQLCON(hand));
- (void)sprintf (interp->result, "%d", num_rows) ;
+ {
+ char buf[30];
+ (void)sprintf (buf, "%d", num_rows) ;
+ Tcl_SetResult(interp, buf, TCL_STATIC);
+ }
if (mysql_insert_id(MYSQLCON(hand)) != 0)
mysqlHandle[hand].last_insert_id = mysql_insert_id(MYSQLCON(hand));
return TCL_OK ;
@@ -1231,7 +1241,11 @@
mysql_data_seek (mysqlHandle[hand].result, row);
mysqlHandle[hand].res_count = total - row;
}
- (void)sprintf (interp->result, "%d", mysqlHandle[hand].res_count) ;
+ {
+ char buf[30];
+ (void)sprintf (buf, "%d", mysqlHandle[hand].res_count) ;
+ Tcl_SetResult(interp, buf, TCL_STATIC);
+ }
return TCL_OK;
}
@@ -1386,7 +1400,7 @@
switch (idx) {
case MYSQL_INFNAME_OPT:
case MYSQL_INFNAMEQ_OPT:
- strcpy (interp->result, mysqlHandle[hand].connection->database) ;
+ Tcl_SetResult(interp, mysqlHandle[hand].connection->database, TCL_STATIC);
break ;
case MYSQL_INFTABLES_OPT:
if ((list= mysql_list_tables (MYSQLCON(hand), NULL)) == NULL)
@@ -1400,7 +1414,7 @@
break ;
case MYSQL_INFHOST_OPT:
case MYSQL_INFHOSTQ_OPT:
- strcpy (interp->result, mysqlHandle[hand].connection->host) ;
+ Tcl_SetResult(interp, mysqlHandle[hand].connection->host, TCL_STATIC) ;
break ;
case MYSQL_INFLIST_OPT:
if ((list = mysql_list_dbs (MYSQLCON(hand), NULL)) == NULL)
@@ -1473,17 +1487,29 @@
switch (idx) {
case MYSQL_RESROWS_OPT:
case MYSQL_RESROWSQ_OPT:
- sprintf (interp->result, "%d", mysqlHandle[hand].res_count) ;
+ {
+ char buf[30];
+ sprintf(buf, "%d", mysqlHandle[hand].res_count);
+ Tcl_SetResult(interp, buf, TCL_STATIC);
+ }
break ;
case MYSQL_RESCOLS_OPT:
case MYSQL_RESCOLSQ_OPT:
- sprintf (interp->result, "%d", mysqlHandle[hand].col_count) ;
+ {
+ char buf[30];
+ sprintf (buf, "%d", mysqlHandle[hand].col_count) ;
+ Tcl_SetResult(interp, buf, TCL_STATIC);
+ }
break ;
case MYSQL_RESCUR_OPT:
case MYSQL_RESCURQ_OPT:
- sprintf (interp->result, "%d",
+ {
+ char buf[30];
+ sprintf (buf, "%d",
(int)(mysql_num_rows (mysqlHandle[hand].result)
- mysqlHandle[hand].res_count)) ;
+ Tcl_SetResult(interp, buf, TCL_STATIC);
+ }
default: /* unknown option: not possible, already checked, but anyway... */
sprintf (buf, "'%s' unknown option", argv[2]);
return mysqlPrimConfl (buf) ;
@@ -1637,7 +1663,7 @@
else
res = (numeric)?"4":"RESULT_PENDING" ;
- (void)strcpy (interp->result, res) ;
+ Tcl_SetResult(interp, (char *)res, TCL_STATIC) ;
return TCL_OK ;
}
@@ -1656,7 +1682,10 @@
if ((hand = mysqlPrologue(interp, argc, argv, 2, get_handle_conn,
"handle")) < 0)
return TCL_ERROR;
- (void)sprintf (interp->result, "%d", mysqlHandle[hand].last_insert_id);
+ {char buf[30];
+ (void)sprintf (buf, "%d", mysqlHandle[hand].last_insert_id);
+ Tcl_SetResult(interp, buf, TCL_STATIC);
+ }
return TCL_OK;
}