[153566] trunk/base/src/pextlib1.0/Pextlib.c

raimue at macports.org raimue at macports.org
Tue Oct 4 17:43:41 CEST 2016


Revision: 153566
          https://trac.macports.org/changeset/153566
Author:   raimue at macports.org
Date:     2016-10-04 08:43:41 -0700 (Tue, 04 Oct 2016)
Log Message:
-----------
pextlib: avoid fixed-size buffer in ui_message

Use asprintf for Tcl command formatting instead of a buffer of fixed size.
Also switch to Tcl_EvalEx that should always be preferred over Tcl_Eval for
efficiency.

Modified Paths:
--------------
    trunk/base/src/pextlib1.0/Pextlib.c

Modified: trunk/base/src/pextlib1.0/Pextlib.c
===================================================================
--- trunk/base/src/pextlib1.0/Pextlib.c	2016-10-04 15:35:04 UTC (rev 153565)
+++ trunk/base/src/pextlib1.0/Pextlib.c	2016-10-04 15:43:41 UTC (rev 153566)
@@ -109,22 +109,26 @@
 
 __attribute__((format(printf, 3, 0)))
 static void ui_message(Tcl_Interp *interp, const char *severity, const char *format, va_list va) {
-    char tclcmd[32];
+    char *tclcmd;
     char *buf;
 
     if (vasprintf(&buf, format, va) < 0) {
         perror("vasprintf");
         return;
     }
+    if (asprintf(&tclcmd, "ui_%s $warn", severity) < 0) {
+        perror("asprintf");
+        free(buf);
+        return;
+    }
 
-    snprintf(tclcmd, sizeof(tclcmd), "ui_%s $warn", severity);
-
     Tcl_SetVar(interp, "warn", buf, 0);
-    if (TCL_OK != Tcl_Eval(interp, tclcmd)) {
-        fprintf(stderr, "Error evaluating tcl statement `%s': %s\n", tclcmd, Tcl_GetStringResult(interp));
+    if (TCL_OK != Tcl_EvalEx(interp, tclcmd, -1, 0)) {
+        fprintf(stderr, "Error evaluating Tcl statement '%s': %s (message: '%s')\n", tclcmd, Tcl_GetStringResult(interp), buf);
     }
     Tcl_UnsetVar(interp, "warn", 0);
     free(buf);
+    free(tclcmd);
 }
 
 __attribute__((format(printf, 2, 3)))
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macports.org/pipermail/macports-changes/attachments/20161004/27ad87e1/attachment-0002.html>


More information about the macports-changes mailing list