rework the VDBE engine.  NULL is now distinct from "" (CVS 49)

FossilOrigin-Name: 6ea5cebf05562de00d2cf0b9e2aac5f3857638ee
diff --git a/src/tclsqlite.c b/src/tclsqlite.c
index 1499cf6..e3e88d0 100644
--- a/src/tclsqlite.c
+++ b/src/tclsqlite.c
@@ -23,7 +23,7 @@
 *************************************************************************
 ** A TCL Interface to SQLite
 **
-** $Id: tclsqlite.c,v 1.4 2000/06/02 01:17:38 drh Exp $
+** $Id: tclsqlite.c,v 1.5 2000/06/04 12:58:38 drh Exp $
 */
 #include "sqlite.h"
 #include <tcl.h>
@@ -61,11 +61,15 @@
       }
     }
     for(i=0; i<nCol; i++){
-      Tcl_SetVar2(cbData->interp, cbData->zArray, azN[i], azCol[i], 0);
+      char *z = azCol[i];
+      if( z==0 ) z = "";
+      Tcl_SetVar2(cbData->interp, cbData->zArray, azN[i], z, 0);
     }
   }else{
     for(i=0; i<nCol; i++){
-      Tcl_SetVar(cbData->interp, azN[i], azCol[i], 0);
+      char *z = azCol[i];
+      if( z==0 ) z = "";
+      Tcl_SetVar(cbData->interp, azN[i], z, 0);
     }
   }
   cbData->once = 0;
@@ -283,9 +287,9 @@
           TCL_GLOBAL_ONLY | TCL_LIST_ELEMENT | TCL_APPEND_VALUE);
     }
     if( Tcl_EvalFile(interp, argv[1])!=TCL_OK ){
-      fprintf(stderr,"%s: %s\n", *argv, 
-         Tcl_GetVar(interp, "errorInfo", TCL_GLOBAL_ONLY)
-      );
+      char *zInfo = Tcl_GetVar(interp, "errorInfo", TCL_GLOBAL_ONLY);
+      if( zInfo==0 ) zInfo = interp->result;
+      fprintf(stderr,"%s: %s\n", *argv, zInfo);
       return 1;
     }
   }else{