On Nov 28, 2007 11:42 AM, Zoran Vasiljevic
<[EMAIL PROTECTED]> wrote:
> Update of /cvsroot/naviserver/naviserver/nsd
> In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv23874/nsd
>
> Modified Files:
>         tclconf.c
> Log Message:
> * nsd/tclconf.c: Fixed NsTclConfigObjCmd() to correctly set the
>   returned value of an default boolean param to 0/1 and not just
>   blindly parrot what user has given (true/false for example) as
>   this could (and it does!) break Tcl expressions.
>
>
>
> Index: tclconf.c
> ===================================================================
> RCS file: /cvsroot/naviserver/naviserver/nsd/tclconf.c,v
> retrieving revision 1.5
> retrieving revision 1.6
> diff -C2 -d -r1.5 -r1.6
> *** tclconf.c   21 Oct 2007 16:20:24 -0000      1.5
> --- tclconf.c   28 Nov 2007 11:42:38 -0000      1.6
> ***************
> *** 130,140 ****
>
>       if (defObj != NULL) {
> !         if ((isbool && Tcl_GetBooleanFromObj(interp, defObj, &i) != TCL_OK)
> !                 || (isint && Tcl_GetWideIntFromObj(interp, defObj, &v) != 
> TCL_OK)) {
> !             return TCL_ERROR;
> !         }
> !         if (isint && (v < min || v > max)) {
> !             Tcl_SetResult(interp, "value out of range", TCL_STATIC);
> !             return TCL_ERROR;
>           }
>           Tcl_SetObjResult(interp, defObj);
> --- 130,143 ----
>
>       if (defObj != NULL) {
> !         if (isbool) {
> !             if (Tcl_GetBooleanFromObj(interp, defObj, &i) != TCL_OK) {
> !                 return TCL_ERROR;
> !             }
> !             defObj = Tcl_NewIntObj(i);
> !         } else if (isint) {
> !             if (v < min || v > max) {
> !                 Tcl_SetResult(interp, "value out of range", TCL_STATIC);
> !                 return TCL_ERROR;
> !             }
>           }
>           Tcl_SetObjResult(interp, defObj);


Pre-change:


% expr !1
0
% expr !0
1

% expr !true
0
% expr !yes
0
% expr !y
0

% expr !yup
syntax error in expression "!yup": variable references require preceding $

% expr ![ns_config -bool a/b c yup]
expected boolean value but got "yup"



Post-change:


$ make test TCLTESTARGS="-file ns_config.test"


Only running test files that match:  ns_config.test
Tests began at Wed Nov 28 06:18:18 PM GMT 2007
ns_config.test

==== ns_config-3.4 not an int FAILED
==== Contents of test case:

    ns_config -int ns/testconfig missing huh?

---- Test completed normally; Return code was: 0
---- Return code should have been one of: 1
==== ns_config-3.4 FAILED


==== ns_config-4.6 int min def FAILED
==== Contents of test case:

    ns_config -min 43 ns/testconfig intval 43

---- Test generated error; Return code was: 1
---- Return code should have been one of: 0 2
---- errorInfo: value out of range
    while executing
"ns_config -min 43 ns/testconfig intval 43"
    ("uplevel" body line 2)
    invoked from within
"uplevel 1 $script"
---- errorCode: NONE
==== ns_config-4.6 FAILED


==== ns_config-4.7 int max def FAILED
==== Contents of test case:

    ns_config -max 41 ns/testconfig intval 41

---- Test generated error; Return code was: 1
---- Return code should have been one of: 0 2
---- errorInfo: value out of range
    while executing
"ns_config -max 41 ns/testconfig intval 41"
    ("uplevel" body line 2)
    invoked from within
"uplevel 1 $script"
---- errorCode: NONE
==== ns_config-4.7 FAILED


Tests ended at Wed Nov 28 06:18:18 PM GMT 2007
all.tcl:        Total   31      Passed  28      Skipped 0       Failed  3
Sourced 1 Test Files.
Files with failing tests: ns_config.test

-------------------------------------------------------------------------
SF.Net email is sponsored by: The Future of Linux Business White Paper
from Novell.  From the desktop to the data center, Linux is going
mainstream.  Let it simplify your IT future.
http://altfarm.mediaplex.com/ad/ck/8857-50307-18918-4
_______________________________________________
naviserver-devel mailing list
naviserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/naviserver-devel

Reply via email to