|
Karsten Hopp |
c81e3f |
To: vim_dev@googlegroups.com
|
|
Karsten Hopp |
c81e3f |
Subject: Patch 7.3.451
|
|
Karsten Hopp |
c81e3f |
Fcc: outbox
|
|
Karsten Hopp |
c81e3f |
From: Bram Moolenaar <Bram@moolenaar.net>
|
|
Karsten Hopp |
c81e3f |
Mime-Version: 1.0
|
|
Karsten Hopp |
c81e3f |
Content-Type: text/plain; charset=UTF-8
|
|
Karsten Hopp |
c81e3f |
Content-Transfer-Encoding: 8bit
|
|
Karsten Hopp |
c81e3f |
------------
|
|
Karsten Hopp |
c81e3f |
|
|
Karsten Hopp |
c81e3f |
Patch 7.3.451
|
|
Karsten Hopp |
c81e3f |
Problem: Tcl doesn't work on 64 bit MS-Windows.
|
|
Karsten Hopp |
c81e3f |
Solution: Make it work. (Dave Bodenstab)
|
|
Karsten Hopp |
c81e3f |
Files: src/Make_mvc.mak, src/if_tcl.c
|
|
Karsten Hopp |
c81e3f |
|
|
Karsten Hopp |
c81e3f |
|
|
Karsten Hopp |
c81e3f |
*** ../vim-7.3.450/src/Make_mvc.mak 2012-02-12 01:55:50.000000000 +0100
|
|
Karsten Hopp |
c81e3f |
--- src/Make_mvc.mak 2012-02-22 15:43:01.000000000 +0100
|
|
Karsten Hopp |
c81e3f |
***************
|
|
Karsten Hopp |
c81e3f |
*** 616,622 ****
|
|
Karsten Hopp |
c81e3f |
-DDYNAMIC_TCL_VER=\"$(TCL_VER_LONG)\"
|
|
Karsten Hopp |
c81e3f |
TCL_OBJ = $(OUTDIR)\if_tcl.obj
|
|
Karsten Hopp |
c81e3f |
TCL_INC = /I "$(TCL)\Include" /I "$(TCL)"
|
|
Karsten Hopp |
c81e3f |
! TCL_LIB = $(TCL)\lib\tclstub$(TCL_VER).lib
|
|
Karsten Hopp |
c81e3f |
!else
|
|
Karsten Hopp |
c81e3f |
CFLAGS = $(CFLAGS) -DFEAT_TCL
|
|
Karsten Hopp |
c81e3f |
TCL_OBJ = $(OUTDIR)\if_tcl.obj
|
|
Karsten Hopp |
c81e3f |
--- 616,622 ----
|
|
Karsten Hopp |
c81e3f |
-DDYNAMIC_TCL_VER=\"$(TCL_VER_LONG)\"
|
|
Karsten Hopp |
c81e3f |
TCL_OBJ = $(OUTDIR)\if_tcl.obj
|
|
Karsten Hopp |
c81e3f |
TCL_INC = /I "$(TCL)\Include" /I "$(TCL)"
|
|
Karsten Hopp |
c81e3f |
! TCL_LIB = "$(TCL)\lib\tclstub$(TCL_VER).lib"
|
|
Karsten Hopp |
c81e3f |
!else
|
|
Karsten Hopp |
c81e3f |
CFLAGS = $(CFLAGS) -DFEAT_TCL
|
|
Karsten Hopp |
c81e3f |
TCL_OBJ = $(OUTDIR)\if_tcl.obj
|
|
Karsten Hopp |
c81e3f |
*** ../vim-7.3.450/src/if_tcl.c 2011-07-27 14:15:41.000000000 +0200
|
|
Karsten Hopp |
c81e3f |
--- src/if_tcl.c 2012-02-22 15:47:00.000000000 +0100
|
|
Karsten Hopp |
c81e3f |
***************
|
|
Karsten Hopp |
c81e3f |
*** 79,90 ****
|
|
Karsten Hopp |
c81e3f |
typedef struct
|
|
Karsten Hopp |
c81e3f |
{
|
|
Karsten Hopp |
c81e3f |
Tcl_Interp *interp;
|
|
Karsten Hopp |
c81e3f |
int range_start, range_end;
|
|
Karsten Hopp |
c81e3f |
int lbase;
|
|
Karsten Hopp |
c81e3f |
char *curbuf, *curwin;
|
|
Karsten Hopp |
c81e3f |
} tcl_info;
|
|
Karsten Hopp |
c81e3f |
|
|
Karsten Hopp |
c81e3f |
! static tcl_info tclinfo = { NULL, 0, 0, 0, NULL, NULL };
|
|
Karsten Hopp |
c81e3f |
|
|
Karsten Hopp |
c81e3f |
#define VAR_RANGE1 "::vim::range(start)"
|
|
Karsten Hopp |
c81e3f |
#define VAR_RANGE2 "::vim::range(begin)"
|
|
Karsten Hopp |
c81e3f |
--- 79,91 ----
|
|
Karsten Hopp |
c81e3f |
typedef struct
|
|
Karsten Hopp |
c81e3f |
{
|
|
Karsten Hopp |
c81e3f |
Tcl_Interp *interp;
|
|
Karsten Hopp |
c81e3f |
+ int exitvalue;
|
|
Karsten Hopp |
c81e3f |
int range_start, range_end;
|
|
Karsten Hopp |
c81e3f |
int lbase;
|
|
Karsten Hopp |
c81e3f |
char *curbuf, *curwin;
|
|
Karsten Hopp |
c81e3f |
} tcl_info;
|
|
Karsten Hopp |
c81e3f |
|
|
Karsten Hopp |
c81e3f |
! static tcl_info tclinfo = { NULL, 0, 0, 0, 0, NULL, NULL };
|
|
Karsten Hopp |
c81e3f |
|
|
Karsten Hopp |
c81e3f |
#define VAR_RANGE1 "::vim::range(start)"
|
|
Karsten Hopp |
c81e3f |
#define VAR_RANGE2 "::vim::range(begin)"
|
|
Karsten Hopp |
c81e3f |
***************
|
|
Karsten Hopp |
c81e3f |
*** 279,294 ****
|
|
Karsten Hopp |
c81e3f |
****************************************************************************/
|
|
Karsten Hopp |
c81e3f |
|
|
Karsten Hopp |
c81e3f |
/*
|
|
Karsten Hopp |
c81e3f |
! * Replace standard "exit" and "catch" commands.
|
|
Karsten Hopp |
c81e3f |
*
|
|
Karsten Hopp |
c81e3f |
! * This is a design flaw in Tcl - the standard "exit" command just calls
|
|
Karsten Hopp |
c81e3f |
! * exit() and kills the application. It should return TCL_EXIT to the
|
|
Karsten Hopp |
c81e3f |
! * app, which then decides if it wants to terminate or not. In our case,
|
|
Karsten Hopp |
c81e3f |
! * we just delete the Tcl interpreter (and create a new one with the next
|
|
Karsten Hopp |
c81e3f |
! * :tcl command).
|
|
Karsten Hopp |
c81e3f |
*/
|
|
Karsten Hopp |
c81e3f |
- #define TCL_EXIT 5
|
|
Karsten Hopp |
c81e3f |
-
|
|
Karsten Hopp |
c81e3f |
static int
|
|
Karsten Hopp |
c81e3f |
exitcmd(dummy, interp, objc, objv)
|
|
Karsten Hopp |
c81e3f |
ClientData dummy UNUSED;
|
|
Karsten Hopp |
c81e3f |
--- 280,298 ----
|
|
Karsten Hopp |
c81e3f |
****************************************************************************/
|
|
Karsten Hopp |
c81e3f |
|
|
Karsten Hopp |
c81e3f |
/*
|
|
Karsten Hopp |
c81e3f |
! * Replace standard "exit" command.
|
|
Karsten Hopp |
c81e3f |
*
|
|
Karsten Hopp |
c81e3f |
! * Delete the Tcl interpreter; a new one will be created with the next
|
|
Karsten Hopp |
c81e3f |
! * :tcl command). The exit code is saved (and retrieved in tclexit()).
|
|
Karsten Hopp |
c81e3f |
! * Since Tcl's exit is never expected to return and this replacement
|
|
Karsten Hopp |
c81e3f |
! * does, then (except for a trivial case) additional Tcl commands will
|
|
Karsten Hopp |
c81e3f |
! * be run. Since the interpreter is now marked as deleted, an error
|
|
Karsten Hopp |
c81e3f |
! * will be returned -- typically "attempt to call eval in deleted
|
|
Karsten Hopp |
c81e3f |
! * interpreter". Hopefully, at this point, checks for TCL_ERROR take
|
|
Karsten Hopp |
c81e3f |
! * place and control percolates back up to Vim -- but with this new error
|
|
Karsten Hopp |
c81e3f |
! * string in the interpreter's result value. Therefore it would be
|
|
Karsten Hopp |
c81e3f |
! * useless for this routine to return the exit code via Tcl_SetResult().
|
|
Karsten Hopp |
c81e3f |
*/
|
|
Karsten Hopp |
c81e3f |
static int
|
|
Karsten Hopp |
c81e3f |
exitcmd(dummy, interp, objc, objv)
|
|
Karsten Hopp |
c81e3f |
ClientData dummy UNUSED;
|
|
Karsten Hopp |
c81e3f |
***************
|
|
Karsten Hopp |
c81e3f |
*** 305,351 ****
|
|
Karsten Hopp |
c81e3f |
break;
|
|
Karsten Hopp |
c81e3f |
/* FALLTHROUGH */
|
|
Karsten Hopp |
c81e3f |
case 1:
|
|
Karsten Hopp |
c81e3f |
! Tcl_SetObjResult(interp, Tcl_NewIntObj(value));
|
|
Karsten Hopp |
c81e3f |
! return TCL_EXIT;
|
|
Karsten Hopp |
c81e3f |
! default:
|
|
Karsten Hopp |
c81e3f |
! Tcl_WrongNumArgs(interp, 1, objv, "?returnCode?");
|
|
Karsten Hopp |
c81e3f |
! }
|
|
Karsten Hopp |
c81e3f |
! return TCL_ERROR;
|
|
Karsten Hopp |
c81e3f |
! }
|
|
Karsten Hopp |
c81e3f |
|
|
Karsten Hopp |
c81e3f |
! static int
|
|
Karsten Hopp |
c81e3f |
! catchcmd(dummy, interp, objc, objv)
|
|
Karsten Hopp |
c81e3f |
! ClientData dummy UNUSED;
|
|
Karsten Hopp |
c81e3f |
! Tcl_Interp *interp;
|
|
Karsten Hopp |
c81e3f |
! int objc;
|
|
Karsten Hopp |
c81e3f |
! Tcl_Obj *CONST objv[];
|
|
Karsten Hopp |
c81e3f |
! {
|
|
Karsten Hopp |
c81e3f |
! char *varname = NULL;
|
|
Karsten Hopp |
c81e3f |
! int result;
|
|
Karsten Hopp |
c81e3f |
!
|
|
Karsten Hopp |
c81e3f |
! switch (objc)
|
|
Karsten Hopp |
c81e3f |
! {
|
|
Karsten Hopp |
c81e3f |
! case 3:
|
|
Karsten Hopp |
c81e3f |
! varname = Tcl_GetStringFromObj(objv[2], NULL);
|
|
Karsten Hopp |
c81e3f |
! /* fallthrough */
|
|
Karsten Hopp |
c81e3f |
! case 2:
|
|
Karsten Hopp |
c81e3f |
! Tcl_ResetResult(interp);
|
|
Karsten Hopp |
c81e3f |
! Tcl_AllowExceptions(interp);
|
|
Karsten Hopp |
c81e3f |
! result = Tcl_EvalObj(interp, objv[1]);
|
|
Karsten Hopp |
c81e3f |
! if (result == TCL_EXIT)
|
|
Karsten Hopp |
c81e3f |
! return result;
|
|
Karsten Hopp |
c81e3f |
! if (varname)
|
|
Karsten Hopp |
c81e3f |
! {
|
|
Karsten Hopp |
c81e3f |
! if (Tcl_SetVar(interp, varname, Tcl_GetStringResult(interp), 0) == NULL)
|
|
Karsten Hopp |
c81e3f |
! {
|
|
Karsten Hopp |
c81e3f |
! Tcl_SetResult(interp, "couldn't save command result in variable", TCL_STATIC);
|
|
Karsten Hopp |
c81e3f |
! return TCL_ERROR;
|
|
Karsten Hopp |
c81e3f |
! }
|
|
Karsten Hopp |
c81e3f |
! }
|
|
Karsten Hopp |
c81e3f |
! Tcl_SetObjResult(interp, Tcl_NewIntObj(result));
|
|
Karsten Hopp |
c81e3f |
! return TCL_OK;
|
|
Karsten Hopp |
c81e3f |
default:
|
|
Karsten Hopp |
c81e3f |
! Tcl_WrongNumArgs(interp, 1, objv, "command ?varName?");
|
|
Karsten Hopp |
c81e3f |
}
|
|
Karsten Hopp |
c81e3f |
return TCL_ERROR;
|
|
Karsten Hopp |
c81e3f |
}
|
|
Karsten Hopp |
c81e3f |
--- 309,320 ----
|
|
Karsten Hopp |
c81e3f |
break;
|
|
Karsten Hopp |
c81e3f |
/* FALLTHROUGH */
|
|
Karsten Hopp |
c81e3f |
case 1:
|
|
Karsten Hopp |
c81e3f |
! tclinfo.exitvalue = value;
|
|
Karsten Hopp |
c81e3f |
|
|
Karsten Hopp |
c81e3f |
! Tcl_DeleteInterp(interp);
|
|
Karsten Hopp |
c81e3f |
! break;
|
|
Karsten Hopp |
c81e3f |
default:
|
|
Karsten Hopp |
c81e3f |
! Tcl_WrongNumArgs(interp, 1, objv, "?returnCode?");
|
|
Karsten Hopp |
c81e3f |
}
|
|
Karsten Hopp |
c81e3f |
return TCL_ERROR;
|
|
Karsten Hopp |
c81e3f |
}
|
|
Karsten Hopp |
c81e3f |
***************
|
|
Karsten Hopp |
c81e3f |
*** 372,377 ****
|
|
Karsten Hopp |
c81e3f |
--- 341,347 ----
|
|
Karsten Hopp |
c81e3f |
/*
|
|
Karsten Hopp |
c81e3f |
* "::vim::buffer list" - create a list of buffer commands.
|
|
Karsten Hopp |
c81e3f |
* "::vim::buffer {N}" - create buffer command for buffer N.
|
|
Karsten Hopp |
c81e3f |
+ * "::vim::buffer exists {N}" - test if buffer N exists.
|
|
Karsten Hopp |
c81e3f |
* "::vim::buffer new" - create a new buffer (not implemented)
|
|
Karsten Hopp |
c81e3f |
*/
|
|
Karsten Hopp |
c81e3f |
static int
|
|
Karsten Hopp |
c81e3f |
***************
|
|
Karsten Hopp |
c81e3f |
*** 1663,1669 ****
|
|
Karsten Hopp |
c81e3f |
static Tcl_ChannelType channel_type =
|
|
Karsten Hopp |
c81e3f |
{
|
|
Karsten Hopp |
c81e3f |
"vimmessage", /* typeName */
|
|
Karsten Hopp |
c81e3f |
! NULL, /* version */
|
|
Karsten Hopp |
c81e3f |
channel_close, /* closeProc */
|
|
Karsten Hopp |
c81e3f |
channel_input, /* inputProc */
|
|
Karsten Hopp |
c81e3f |
channel_output, /* outputProc */
|
|
Karsten Hopp |
c81e3f |
--- 1633,1639 ----
|
|
Karsten Hopp |
c81e3f |
static Tcl_ChannelType channel_type =
|
|
Karsten Hopp |
c81e3f |
{
|
|
Karsten Hopp |
c81e3f |
"vimmessage", /* typeName */
|
|
Karsten Hopp |
c81e3f |
! TCL_CHANNEL_VERSION_2, /* version */
|
|
Karsten Hopp |
c81e3f |
channel_close, /* closeProc */
|
|
Karsten Hopp |
c81e3f |
channel_input, /* inputProc */
|
|
Karsten Hopp |
c81e3f |
channel_output, /* outputProc */
|
|
Karsten Hopp |
c81e3f |
***************
|
|
Karsten Hopp |
c81e3f |
*** 1678,1683 ****
|
|
Karsten Hopp |
c81e3f |
--- 1648,1655 ----
|
|
Karsten Hopp |
c81e3f |
NULL, /* flushProc */
|
|
Karsten Hopp |
c81e3f |
NULL, /* handlerProc */
|
|
Karsten Hopp |
c81e3f |
#endif
|
|
Karsten Hopp |
c81e3f |
+ /* The following should not be necessary since TCL_CHANNEL_VERSION_2 was
|
|
Karsten Hopp |
c81e3f |
+ * set above */
|
|
Karsten Hopp |
c81e3f |
#ifdef TCL_CHANNEL_VERSION_3
|
|
Karsten Hopp |
c81e3f |
NULL, /* wideSeekProc */
|
|
Karsten Hopp |
c81e3f |
#endif
|
|
Karsten Hopp |
c81e3f |
***************
|
|
Karsten Hopp |
c81e3f |
*** 1741,1747 ****
|
|
Karsten Hopp |
c81e3f |
Tcl_Interp *interp;
|
|
Karsten Hopp |
c81e3f |
static Tcl_Channel ch1, ch2;
|
|
Karsten Hopp |
c81e3f |
|
|
Karsten Hopp |
c81e3f |
! /* replace stdout and stderr */
|
|
Karsten Hopp |
c81e3f |
ch1 = Tcl_CreateChannel(&channel_type, "vimout", VIMOUT, TCL_WRITABLE);
|
|
Karsten Hopp |
c81e3f |
ch2 = Tcl_CreateChannel(&channel_type, "vimerr", VIMERR, TCL_WRITABLE);
|
|
Karsten Hopp |
c81e3f |
Tcl_SetStdChannel(ch1, TCL_STDOUT);
|
|
Karsten Hopp |
c81e3f |
--- 1713,1721 ----
|
|
Karsten Hopp |
c81e3f |
Tcl_Interp *interp;
|
|
Karsten Hopp |
c81e3f |
static Tcl_Channel ch1, ch2;
|
|
Karsten Hopp |
c81e3f |
|
|
Karsten Hopp |
c81e3f |
! /* Create replacement channels for stdout and stderr; this has to be
|
|
Karsten Hopp |
c81e3f |
! * done each time an interpreter is created since the channels are closed
|
|
Karsten Hopp |
c81e3f |
! * when the interpreter is deleted */
|
|
Karsten Hopp |
c81e3f |
ch1 = Tcl_CreateChannel(&channel_type, "vimout", VIMOUT, TCL_WRITABLE);
|
|
Karsten Hopp |
c81e3f |
ch2 = Tcl_CreateChannel(&channel_type, "vimerr", VIMERR, TCL_WRITABLE);
|
|
Karsten Hopp |
c81e3f |
Tcl_SetStdChannel(ch1, TCL_STDOUT);
|
|
Karsten Hopp |
c81e3f |
***************
|
|
Karsten Hopp |
c81e3f |
*** 1761,1775 ****
|
|
Karsten Hopp |
c81e3f |
#endif
|
|
Karsten Hopp |
c81e3f |
|
|
Karsten Hopp |
c81e3f |
Tcl_SetChannelOption(interp, ch1, "-buffering", "line");
|
|
Karsten Hopp |
c81e3f |
Tcl_SetChannelOption(interp, ch2, "-buffering", "line");
|
|
Karsten Hopp |
c81e3f |
|
|
Karsten Hopp |
c81e3f |
! /* replace some standard Tcl commands */
|
|
Karsten Hopp |
c81e3f |
Tcl_DeleteCommand(interp, "exit");
|
|
Karsten Hopp |
c81e3f |
Tcl_CreateObjCommand(interp, "exit", exitcmd,
|
|
Karsten Hopp |
c81e3f |
(ClientData)NULL, (Tcl_CmdDeleteProc *)NULL);
|
|
Karsten Hopp |
c81e3f |
- Tcl_DeleteCommand(interp, "catch");
|
|
Karsten Hopp |
c81e3f |
- Tcl_CreateObjCommand(interp, "catch", catchcmd,
|
|
Karsten Hopp |
c81e3f |
- (ClientData)NULL, (Tcl_CmdDeleteProc *)NULL);
|
|
Karsten Hopp |
c81e3f |
|
|
Karsten Hopp |
c81e3f |
/* new commands, in ::vim namespace */
|
|
Karsten Hopp |
c81e3f |
Tcl_CreateObjCommand(interp, "::vim::buffer", buffercmd,
|
|
Karsten Hopp |
c81e3f |
--- 1735,1752 ----
|
|
Karsten Hopp |
c81e3f |
#endif
|
|
Karsten Hopp |
c81e3f |
|
|
Karsten Hopp |
c81e3f |
Tcl_SetChannelOption(interp, ch1, "-buffering", "line");
|
|
Karsten Hopp |
c81e3f |
+ #ifdef WIN3264
|
|
Karsten Hopp |
c81e3f |
+ Tcl_SetChannelOption(interp, ch1, "-translation", "lf");
|
|
Karsten Hopp |
c81e3f |
+ #endif
|
|
Karsten Hopp |
c81e3f |
Tcl_SetChannelOption(interp, ch2, "-buffering", "line");
|
|
Karsten Hopp |
c81e3f |
+ #ifdef WIN3264
|
|
Karsten Hopp |
c81e3f |
+ Tcl_SetChannelOption(interp, ch2, "-translation", "lf");
|
|
Karsten Hopp |
c81e3f |
+ #endif
|
|
Karsten Hopp |
c81e3f |
|
|
Karsten Hopp |
c81e3f |
! /* replace standard Tcl exit command */
|
|
Karsten Hopp |
c81e3f |
Tcl_DeleteCommand(interp, "exit");
|
|
Karsten Hopp |
c81e3f |
Tcl_CreateObjCommand(interp, "exit", exitcmd,
|
|
Karsten Hopp |
c81e3f |
(ClientData)NULL, (Tcl_CmdDeleteProc *)NULL);
|
|
Karsten Hopp |
c81e3f |
|
|
Karsten Hopp |
c81e3f |
/* new commands, in ::vim namespace */
|
|
Karsten Hopp |
c81e3f |
Tcl_CreateObjCommand(interp, "::vim::buffer", buffercmd,
|
|
Karsten Hopp |
c81e3f |
***************
|
|
Karsten Hopp |
c81e3f |
*** 1821,1826 ****
|
|
Karsten Hopp |
c81e3f |
--- 1798,1805 ----
|
|
Karsten Hopp |
c81e3f |
tclinfo.range_end = row2tcl(eap->line2);
|
|
Karsten Hopp |
c81e3f |
tclupdatevars();
|
|
Karsten Hopp |
c81e3f |
}
|
|
Karsten Hopp |
c81e3f |
+
|
|
Karsten Hopp |
c81e3f |
+ tclinfo.exitvalue = 0;
|
|
Karsten Hopp |
c81e3f |
return OK;
|
|
Karsten Hopp |
c81e3f |
}
|
|
Karsten Hopp |
c81e3f |
|
|
Karsten Hopp |
c81e3f |
***************
|
|
Karsten Hopp |
c81e3f |
*** 1884,1913 ****
|
|
Karsten Hopp |
c81e3f |
{
|
|
Karsten Hopp |
c81e3f |
int newerr = OK;
|
|
Karsten Hopp |
c81e3f |
|
|
Karsten Hopp |
c81e3f |
! if (error == TCL_EXIT)
|
|
Karsten Hopp |
c81e3f |
{
|
|
Karsten Hopp |
c81e3f |
- int retval;
|
|
Karsten Hopp |
c81e3f |
char buf[50];
|
|
Karsten Hopp |
c81e3f |
- Tcl_Obj *robj;
|
|
Karsten Hopp |
c81e3f |
|
|
Karsten Hopp |
c81e3f |
! robj = Tcl_GetObjResult(tclinfo.interp);
|
|
Karsten Hopp |
c81e3f |
! if (Tcl_GetIntFromObj(tclinfo.interp, robj, &retval) != TCL_OK)
|
|
Karsten Hopp |
c81e3f |
{
|
|
Karsten Hopp |
c81e3f |
! EMSG(_("E281: TCL ERROR: exit code is not int!? Please report this to vim-dev@vim.org"));
|
|
Karsten Hopp |
c81e3f |
! newerr = FAIL;
|
|
Karsten Hopp |
c81e3f |
}
|
|
Karsten Hopp |
c81e3f |
else
|
|
Karsten Hopp |
c81e3f |
! {
|
|
Karsten Hopp |
c81e3f |
! sprintf(buf, _("E572: exit code %d"), retval);
|
|
Karsten Hopp |
c81e3f |
! tclerrmsg(buf);
|
|
Karsten Hopp |
c81e3f |
! if (retval == 0)
|
|
Karsten Hopp |
c81e3f |
! {
|
|
Karsten Hopp |
c81e3f |
! did_emsg = 0;
|
|
Karsten Hopp |
c81e3f |
! newerr = OK;
|
|
Karsten Hopp |
c81e3f |
! }
|
|
Karsten Hopp |
c81e3f |
! else
|
|
Karsten Hopp |
c81e3f |
! newerr = FAIL;
|
|
Karsten Hopp |
c81e3f |
! }
|
|
Karsten Hopp |
c81e3f |
|
|
Karsten Hopp |
c81e3f |
tcldelthisinterp();
|
|
Karsten Hopp |
c81e3f |
}
|
|
Karsten Hopp |
c81e3f |
--- 1863,1885 ----
|
|
Karsten Hopp |
c81e3f |
{
|
|
Karsten Hopp |
c81e3f |
int newerr = OK;
|
|
Karsten Hopp |
c81e3f |
|
|
Karsten Hopp |
c81e3f |
! if (Tcl_InterpDeleted(tclinfo.interp) /* True if we intercepted Tcl's exit command */
|
|
Karsten Hopp |
c81e3f |
! #if (TCL_MAJOR_VERSION == 8 && TCL_MINOR_VERSION >= 5) || TCL_MAJOR_VERSION > 8
|
|
Karsten Hopp |
c81e3f |
! || Tcl_LimitExceeded(tclinfo.interp) /* True if the interpreter cannot continue */
|
|
Karsten Hopp |
c81e3f |
! #endif
|
|
Karsten Hopp |
c81e3f |
! )
|
|
Karsten Hopp |
c81e3f |
{
|
|
Karsten Hopp |
c81e3f |
char buf[50];
|
|
Karsten Hopp |
c81e3f |
|
|
Karsten Hopp |
c81e3f |
! sprintf(buf, _("E572: exit code %d"), tclinfo.exitvalue);
|
|
Karsten Hopp |
c81e3f |
! tclerrmsg(buf);
|
|
Karsten Hopp |
c81e3f |
! if (tclinfo.exitvalue == 0)
|
|
Karsten Hopp |
c81e3f |
{
|
|
Karsten Hopp |
c81e3f |
! did_emsg = 0;
|
|
Karsten Hopp |
c81e3f |
! newerr = OK;
|
|
Karsten Hopp |
c81e3f |
}
|
|
Karsten Hopp |
c81e3f |
else
|
|
Karsten Hopp |
c81e3f |
! newerr = FAIL;
|
|
Karsten Hopp |
c81e3f |
|
|
Karsten Hopp |
c81e3f |
tcldelthisinterp();
|
|
Karsten Hopp |
c81e3f |
}
|
|
Karsten Hopp |
c81e3f |
***************
|
|
Karsten Hopp |
c81e3f |
*** 2021,2027 ****
|
|
Karsten Hopp |
c81e3f |
Tcl_SetVar(tclinfo.interp, var_line, line, 0);
|
|
Karsten Hopp |
c81e3f |
Tcl_AllowExceptions(tclinfo.interp);
|
|
Karsten Hopp |
c81e3f |
err = Tcl_Eval(tclinfo.interp, script);
|
|
Karsten Hopp |
c81e3f |
! if (err != TCL_OK)
|
|
Karsten Hopp |
c81e3f |
break;
|
|
Karsten Hopp |
c81e3f |
line = (char *)Tcl_GetVar(tclinfo.interp, var_line, 0);
|
|
Karsten Hopp |
c81e3f |
if (line)
|
|
Karsten Hopp |
c81e3f |
--- 1993,2004 ----
|
|
Karsten Hopp |
c81e3f |
Tcl_SetVar(tclinfo.interp, var_line, line, 0);
|
|
Karsten Hopp |
c81e3f |
Tcl_AllowExceptions(tclinfo.interp);
|
|
Karsten Hopp |
c81e3f |
err = Tcl_Eval(tclinfo.interp, script);
|
|
Karsten Hopp |
c81e3f |
! if (err != TCL_OK
|
|
Karsten Hopp |
c81e3f |
! || Tcl_InterpDeleted(tclinfo.interp)
|
|
Karsten Hopp |
c81e3f |
! #if (TCL_MAJOR_VERSION == 8 && TCL_MINOR_VERSION >= 5) || TCL_MAJOR_VERSION > 8
|
|
Karsten Hopp |
c81e3f |
! || Tcl_LimitExceeded(tclinfo.interp)
|
|
Karsten Hopp |
c81e3f |
! #endif
|
|
Karsten Hopp |
c81e3f |
! )
|
|
Karsten Hopp |
c81e3f |
break;
|
|
Karsten Hopp |
c81e3f |
line = (char *)Tcl_GetVar(tclinfo.interp, var_line, 0);
|
|
Karsten Hopp |
c81e3f |
if (line)
|
|
Karsten Hopp |
c81e3f |
*** ../vim-7.3.450/src/version.c 2012-02-22 15:34:05.000000000 +0100
|
|
Karsten Hopp |
c81e3f |
--- src/version.c 2012-02-22 16:00:49.000000000 +0100
|
|
Karsten Hopp |
c81e3f |
***************
|
|
Karsten Hopp |
c81e3f |
*** 716,717 ****
|
|
Karsten Hopp |
c81e3f |
--- 716,719 ----
|
|
Karsten Hopp |
c81e3f |
{ /* Add new patch number below this line */
|
|
Karsten Hopp |
c81e3f |
+ /**/
|
|
Karsten Hopp |
c81e3f |
+ 451,
|
|
Karsten Hopp |
c81e3f |
/**/
|
|
Karsten Hopp |
c81e3f |
|
|
Karsten Hopp |
c81e3f |
--
|
|
Karsten Hopp |
c81e3f |
Where do you want to crash today?
|
|
Karsten Hopp |
c81e3f |
|
|
Karsten Hopp |
c81e3f |
/// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
|
|
Karsten Hopp |
c81e3f |
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
|
|
Karsten Hopp |
c81e3f |
\\\ an exciting new programming language -- http://www.Zimbu.org ///
|
|
Karsten Hopp |
c81e3f |
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
|