Tcl Source Code

View Ticket
Login
Ticket UUID: 342a9ab0e817c7d439d98c621f25d23305eac3a4
Title: sqlite build error
Type: Bug Version:
Submitter: dgp Created on: 2023-11-13 17:54:19
Subsystem: None Assigned To: jan.nijtmans
Priority: 5 Medium Severity: Minor
Status: Pending Last Modified: 2023-11-13 19:20:47
Resolution: Fixed Closed By: nobody
    Closed on:
Description:
Trying to build the sqlite trunk against the Tcl trunk, I see...

In file included from /home/dgp/fossil/tcl/generic/tcl.h:2426:0,
                 from /home/dgp/fossil/tcl/pkgs/sqlite/generic/tclsqlite3.c:46:
/home/dgp/fossil/tcl/pkgs/sqlite/generic/tclsqlite3.c: In function ‘dbPrepareAndBind’:
/home/dgp/fossil/tcl/generic/tclDecls.h:4032:67: error: size of array ‘_bool_Var’ is negative
 #   define TCLBOOLWARNING(boolPtr) ({__attribute__((unused)) char _bool_Var[sizeof(*(boolPtr)) > sizeof(int) ? -1 : 1];}),
                                                                   ^
/home/dgp/fossil/tcl/generic/tclDecls.h:4041:3: note: in expansion of macro ‘TCLBOOLWARNING’
  (TCLBOOLWARNING(boolPtr)(sizeof(*(boolPtr)) >= sizeof(int) && (TCL_MAJOR_VERSION == 8)) ? tclStubsPtr->tcl_GetBooleanFromObj(interp, objPtr, (int *)(boolPtr)) : \
   ^
/home/dgp/fossil/tcl/pkgs/sqlite/generic/tclsqlite3.c:1588:11: note: in expansion of macro ‘Tcl_GetBooleanFromObj’
           Tcl_GetBooleanFromObj(interp, pVar, &n);
User Comments: jan.nijtmans added on 2023-11-13 19:20:47:

Fixed here. This warning was built into tcl.h exactly for this purpose: Tcl_GetBooleanFromObj() should never be used with a Tcl_Size or Tcl_WideInt pointer argument: You cannot always blindly convert int -> Tcl_Size

The warning in Tcl works! Error now fixed in SQLite. I will prepare a new version (3.44.0), which contains this fix.

Thanks!