summaryrefslogtreecommitdiffstats
path: root/otherlibs/labltk/support/cltkMisc.c
diff options
context:
space:
mode:
Diffstat (limited to 'otherlibs/labltk/support/cltkMisc.c')
-rw-r--r--otherlibs/labltk/support/cltkMisc.c39
1 files changed, 22 insertions, 17 deletions
diff --git a/otherlibs/labltk/support/cltkMisc.c b/otherlibs/labltk/support/cltkMisc.c
index 7980e0c8a..a6e823d1d 100644
--- a/otherlibs/labltk/support/cltkMisc.c
+++ b/otherlibs/labltk/support/cltkMisc.c
@@ -1,18 +1,18 @@
-/*************************************************************************/
-/* */
-/* Objective Caml LablTk library */
-/* */
-/* Francois Rouaix, Francois Pessaux and Jun Furuse */
-/* projet Cristal, INRIA Rocquencourt */
-/* Jacques Garrigue, Kyoto University RIMS */
-/* */
-/* Copyright 1999 Institut National de Recherche en Informatique et */
-/* en Automatique and Kyoto University. All rights reserved. */
-/* This file is distributed under the terms of the GNU Library */
-/* General Public License, with the special exception on linking */
-/* described in file ../../../LICENSE. */
-/* */
-/*************************************************************************/
+/***********************************************************************/
+/* */
+/* MLTk, Tcl/Tk interface of Objective Caml */
+/* */
+/* Francois Rouaix, Francois Pessaux, Jun Furuse and Pierre Weis */
+/* projet Cristal, INRIA Rocquencourt */
+/* Jacques Garrigue, Kyoto University RIMS */
+/* */
+/* Copyright 2002 Institut National de Recherche en Informatique et */
+/* en Automatique and Kyoto University. All rights reserved. */
+/* This file is distributed under the terms of the GNU Library */
+/* General Public License, with the special exception on linking */
+/* described in file LICENSE found in the Objective Caml source tree. */
+/* */
+/***********************************************************************/
/* $Id$ */
@@ -29,19 +29,24 @@ CAMLprim value camltk_splitlist (value v)
int argc;
char **argv;
int result;
+ char *utf;
CheckInit();
+ utf = caml_string_to_tcl(v);
/* argv is allocated by Tcl, to be freed by us */
- result = Tcl_SplitList(cltclinterp,String_val(v),&argc,&argv);
+ result = Tcl_SplitList(cltclinterp,utf,&argc,&argv);
switch(result) {
case TCL_OK:
{ value res = copy_string_list(argc,argv);
- free((char *)argv); /* only one large block was allocated */
+ Tcl_Free((char *)argv); /* only one large block was allocated */
+ /* argv points into utf: utf must be freed after argv are freed */
+ stat_free( utf );
return res;
}
case TCL_ERROR:
default:
+ stat_free( utf );
tk_error(cltclinterp->result);
}
}