Posted to tcl by thommey at Tue Jul 19 17:36:56 GMT 2011view pretty
#include <stdio.h> #include <stdlib.h> #include <tcl.h> int main(int argc, char **argv) { int flags, size; char *dst, *src = "#test\\\\\\"; Tcl_Interp *interp; Tcl_FindExecutable(argv[0]); interp = Tcl_CreateInterp(); if (Tcl_Init(interp) != TCL_OK) { fprintf(stderr, "Failure to initialize: %s\n", Tcl_GetStringResult(interp)); return 1; } size = Tcl_ScanElement(src, &flags); dst = malloc(size+1); printf("%d\n", flags); // crash happens when flags==4 (CONVERT_ESCAPE) printf("%d\n", Tcl_ConvertElement(src, dst, flags)); // SEGFAULT (dereferencing NULL pointer) printf("'%s' - '%s'\n", src, dst); free(dst); return 0; }