Index: generic/nsf.c =================================================================== diff -u -r59e100d383b22ea1407f5e5c40e303f2c6bb9027 -r802b6ce0c3ff1c3fb46f4a6ffb23f17d12f76d57 --- generic/nsf.c (.../nsf.c) (revision 59e100d383b22ea1407f5e5c40e303f2c6bb9027) +++ generic/nsf.c (.../nsf.c) (revision 802b6ce0c3ff1c3fb46f4a6ffb23f17d12f76d57) @@ -9679,7 +9679,7 @@ result = AliasRefetch(interp, object, methodName, tcd); if (result != TCL_OK) { - // TODO: check freeing of csc? + /* TODO: check freeing of csc? */ return result; } } @@ -9701,7 +9701,7 @@ proc = Tcl_Command_objProc(cmd); cp = Tcl_Command_objClientData(cmd); - // TODO: dereference chain? + /* TODO: dereference chain? */ } if (NSF_DTRACE_METHOD_ENTRY_ENABLED()) { @@ -18801,7 +18801,8 @@ if (GetObjectFromString(interp, Tcl_Command_nsPtr(cmd)->fullName) == object) { newObjProc = NsfProcAliasMethod; } - // TODO: for forcing redirectors on objects, do something like + + /* TODO: for forcing redirectors on objects, do something like */ newObjProc = NsfProcAliasMethod; /* Index: generic/nsfError.c =================================================================== diff -u -r59e100d383b22ea1407f5e5c40e303f2c6bb9027 -r802b6ce0c3ff1c3fb46f4a6ffb23f17d12f76d57 --- generic/nsfError.c (.../nsfError.c) (revision 59e100d383b22ea1407f5e5c40e303f2c6bb9027) +++ generic/nsfError.c (.../nsfError.c) (revision 802b6ce0c3ff1c3fb46f4a6ffb23f17d12f76d57) @@ -197,9 +197,11 @@ need_space = 1; } if (methodName) { + Tcl_Obj *resultObj; + if (need_space) Tcl_AppendResult(interp, " ", (char *) NULL); - Tcl_Obj *resultObj = NsfMethodNamePath(interp, methodName); + resultObj = NsfMethodNamePath(interp, methodName); INCR_REF_COUNT(resultObj); Tcl_AppendResult(interp, ObjStr(resultObj), (char *) NULL); DECR_REF_COUNT(resultObj); @@ -397,7 +399,7 @@ Tcl_AppendResult(interp, " 2nd error: ", (char *) NULL); } - //Tcl_ResetResult(interp); + /*Tcl_ResetResult(interp);*/ if (context) { Tcl_AppendResult(interp, context, ": ", (char *) NULL); } Index: generic/nsfInt.h =================================================================== diff -u -r7413d266916a491ff674489513351c89987366d7 -r802b6ce0c3ff1c3fb46f4a6ffb23f17d12f76d57 --- generic/nsfInt.h (.../nsfInt.h) (revision 7413d266916a491ff674489513351c89987366d7) +++ generic/nsfInt.h (.../nsfInt.h) (revision 802b6ce0c3ff1c3fb46f4a6ffb23f17d12f76d57) @@ -228,7 +228,7 @@ * This was defined to be inline for anything !sun or __IBMC__ >= 0x0306, * but __hpux should also be checked - switched to only allow in gcc - JH */ -#if defined(__GNUC__) +#if defined(__GNUC__) && !defined(__STRICT_ANSI__) # define NSF_INLINE inline #else # define NSF_INLINE @@ -981,7 +981,26 @@ char *strnstr(const char *buffer, const char *needle, size_t buffer_len); #endif +/* + In ANSI mode (ISO C89/90) compilers such as gcc and clang do not + define the va_copy macro. However, they *do* in reasonably recent + versions provide a prefixed (__*) one. The by-feature test below + falls back to the prefixed version, if available, and provides a + more general fallback to a simple assignment; this is primarily for + MSVC; admittedly, this simplifcation is not generally portable to + platform/compiler combos other then x86, but the best I can think of right + now. One might constrain the assignment-fallback to a platform and + leave va_copy undefined in uncaught platform cases (?). +*/ +#ifndef va_copy +#ifdef __va_copy +#define va_copy(dest,src) __va_copy(dest,src) +#else +#define va_copy(dest,src) ((dest) = (src)) +#endif +#endif + #if !defined(NDEBUG) /*# define NSF_INLINE*/ #endif Index: generic/nsfShadow.c =================================================================== diff -u -ra09faeafaaacd8dcd4c52cdb86653993e8dc499a -r802b6ce0c3ff1c3fb46f4a6ffb23f17d12f76d57 --- generic/nsfShadow.c (.../nsfShadow.c) (revision a09faeafaaacd8dcd4c52cdb86653993e8dc499a) +++ generic/nsfShadow.c (.../nsfShadow.c) (revision 802b6ce0c3ff1c3fb46f4a6ffb23f17d12f76d57) @@ -327,7 +327,7 @@ Tcl_SetObjResult(interp, listObj); } else if (frameFlags & (FRAME_IS_NSF_OBJECT)) { NsfObject *object = (NsfObject *)Tcl_CallFrame_clientData(varFramePtr); - //Tcl_Obj *listObj = Tcl_NewListObj(0, NULL); + /* Tcl_Obj *listObj = Tcl_NewListObj(0, NULL); */ Tcl_ListObjAppendElement(interp, resultObj, Tcl_NewStringObj("object",6)); Tcl_ListObjAppendElement(interp, resultObj, object->cmdName);