generic

Clone Tools
  • last updated 20 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Memleak nsfparam issue1

added casts to debug output

Make handling of colonLocalVarCache more type-safe

Since the usual macro TCL_SIZE_T does not work together with the

macros for the memcount macros, a new typedef "Nsf_Tcl_Size_t" was

introduced. Using a typedef is better and eases maintenance. The new

typedef has a "Nsf_" prefix, since it is defined in nsf.h.

memcount: fix type spec leading to a wrong false positive on memcount tests

* nsf.c (ParamFreeInternalRep): Remove some left-over.

* nsf.c (NsfParamWrapper): refcount mini-reform removing canFree flag

Improved Tcl 9.0.0 compatibility

One needs 'Tcl_InitStubs(interp, "8.5-",...)' instead of

'Tcl_InitStubs(interp, "8.5",...)', since the semantics are seemingly

the same as in "package require ...". Not sure, why we have not seen

this with earlier pre-releases of Tcl9.

Without this change, we see in the NaviServer regression test the following error message:

[27/Sep/2024:10:56:30][18309.7f35ed856540][-main:test-] Error: version conflict for package "tcl": have 9.0.0, need 8.5

: version conflict for package "tcl": have 9.0.0, need 8.5

: while executing

: "load {} Nsf"

: invoked from within

: "ns_ictl update"

: (procedure "ns_cleanup" line 8)

: invoked from within

fix for transitional bug due to NS_TCL_HAVE_TIP629

Deactivating NS_TCL_HAVE_TIP629, since this needs more work to deal

with the two different types of commands (before and after the TIP)

* When we activate NS_TCL_HAVE_TIP629 (TIP supporting > 2^31

* elements in object vectors), Tcl defines different objProcs

* (Tcl_ObjCmdProc and Tcl_ObjCmdProc2) where the usage of these

* depends on a cmdWrapperProc. Unfortunately, the resolving of

* these are performed via CmdWrapperInfo, which is not exported. We

* have to think how to resolve these to make this working as with

* prior Tcl versions.

removed debugging output for NS_TCL_HAVE_TIP629

nsf.h: Remove leftover in header file

improved cleanness of compile with tcl9

improved cleanness of compile with tcl9

improved comment

improved spelling

  1. … 2 more files in changeset.
Bug fix: potential crash and swallowed error

The change fixes 2 bugs:

- When a non-existing method was called in a situation where

* a filter with guards is registered, and

* all guards are failing, and

* the method to be called after the filter does not exist

nsf was crashing

- There was no code to produce the proper error message in such situations

  1. … 1 more file in changeset.
improved spelling

  1. … 18 more files in changeset.
nsf:parseargs: honor "required" settings

The previous version was accepting e.g.

nsf::parseargs -asdict {

{-state:wordchar,required}

{-revision_id:integer,required}

{-return_url:localurl "."}

} {}

i.e. passing empty argument list where the first two arguments are required.

Now, the error is flagged properly

provide clean compilation for current Tcl9

maintenance: reflect type change of Tcl TIP 666 (use Tcl_Size for object count in TIP 627)

Provided a Tcl_DupInternalRepProc() function for Tcl_ObjType "nsfParam"

Recent versions of Tcl9 call Tcl_DupInternalRepProc() for Tcl_ObjType

"nsfParam", which was a placeholder function before, leading to a

Tcl_Abort(). The provided implementation provides now a basic logic

for "duplicating" internal representations of parameter lists based on

refcounts (somewhat similar to ProcBodyDup), but it has to be tested

further, with a proper test case.

The call of the Tcl_DupInternalRepProc function happens so far during

the startup of NaviServer compiled with Tcl9. It might be necessary to

overthink the competing logics of the "canDelete" member and the

reference count. For now, the intention is to get the NaviServer +

Tcl9 regression test stop from aborting.

cleanup after TIP 660

Fixed warnings detected with branch "disabletcl8api"

The Tcl9 native interface is based on "Tcl_Size" instead of "int", but

the default mode hides these differences via some macro-magic. Typical

such cases are API calls like:

Tcl_ListObjLength(interp, methodObj, &length);

Tcl_ListObjGetElements(interp, methodObj, &oc, &ov)

The macro-magic queries the size of the provided parameters and uses

the old or new interface depending on it (while hiding some more

potential problems, a compiler can detect). The branch

"disabletcl8api" removes the macro-magic and reveals the potential

problem areas, where the code is still depending on the old 32bit

interface.

This commit fixes such cases and the collateral damage.

Deactivate support of TIP 629 for the time being

When NS_TCL_HAVE_TIP629 (TIP supporting > 2^31 elements in object

vectors) is activated, Tcl defines different objProcs (Tcl_ObjCmdProc

and Tcl_ObjCmdProc2) for the old and new API, where the usage of these

depends on a cmdWrapperProc. Unfortunately, the resolving of these API

calls is performed through the wrapper via CmdWrapperInfo, which is

not exported. We have to think how to resolve these to make this

working as with prior Tcl versions.

Provide support for TIP 627 (Tcl 8.7a6+ and Tcl 9)

TIP 627 introduces support for > 2^31 elements in object vectors

(e.g., number of words in a single Tcl command). For details, see

https://core.tcl-lang.org/tips/doc/trunk/tip/627.md

To provide also backwards compatibility, this change uses the macros

TCL_COMMAND_OBJPROC, TCL_CREATEOBJCOMMAND, TCL_NRCALLOBJPROC,

TCL_NRCREATECOMMAND, TCL_OBJCMDPROC_T, and TCL_OBJC_T.

  1. … 7 more files in changeset.
updated copyright notice

improve spelling

  1. … 8 more files in changeset.
New feature: added support for return value checker for nsf::proc

One can now specify "-returns ...." in nsf::proc commands the same way

as in nx/XOTcl2 methods.

nsf::proc ... /procName/ /arguments/ ?-returns /valueconstraint/? /body/

When return value checkers are defined, these are returned by the

usual introspection interface.

% nsf::proc ::foo {-a:integer} -returns integer {return 1}

% nsf::cmd::info definition ::foo

::nsf::proc ::foo -a:integer -returns integer {return 1}

% nsf::cmd::info returns ::foo

integer

The regression test was extended to cover these cases.

  1. … 3 more files in changeset.
extend Tcl9 compatibility

Fix bug, where Tcl's "string is" checker modified result, when used as a return value checker

The new code saves and restores the original result value.

The regression test was extended.

Many thanks to Antonio Pisano for pointing out this issue.

  1. … 1 more file in changeset.
generalize handling of isTYPE calls by defining CHARTTYPE

The macro was developed earlier on NaviServer, and is used

in nsf for "upper", "space" and "alpha" character checkers