rem: newElement = Tcl_Merge(2, elemArgv);
add: newElement = Tcl_Merge(2, (CONST char**)elemArgv);
context: Tcl_DeleteKeyedListField(interp, fieldName, keyedList)    Tcl_Interp     *interp;    CONST char     *fieldName;    CONST char     *keyedList;{    char           *nameSeparPtr;    char           *newList;    int             idx;    fieldInfo_t     fieldInfo;    char           *elemArgv[2];    char           *newElement;    /*     * Check for sub-names, temporarly delimit the top name with a '\0'.     */    nameSeparPtr = strchr((char *) fieldName, '.');    if (nameSeparPtr != NULL)        *nameSeparPtr = '\0';    if (SplitAndFindField(interp, fieldName, keyedList, &fieldInfo) != TCL_OK)        goto errorExit;    if (fieldInfo.foundIdx == -1) {        Tcl_AppendResult(interp, "field name not found: \"", fieldName,            "\"", (char *) NULL);        goto errorExit;    }    /*     * If sub-field, recurse down to find the field to delete. If empty field     * returned or no sub-field, delete the found entry by moving everything     * up in the argv.     */    elemArgv[0] = (char *) fieldName;    if (nameSeparPtr != NULL) {        char            saveChar;        if (fieldInfo.valuePtr != NULL) {            saveChar = fieldInfo.valuePtr[fieldInfo.valueSize];            fieldInfo.valuePtr[fieldInfo.valueSize] = '\0';        }        elemArgv[1] = Tcl_DeleteKeyedListField(interp, nameSeparPtr + 1,            fieldInfo.valuePtr);        if (fieldInfo.valuePtr != NULL)            fieldInfo.valuePtr[fieldInfo.valueSize] = saveChar;        if (elemArgv[1] == NULL)            goto errorExit;        if (elemArgv[1][0] == '\0')            newElement = NULL;        else            newElement = Tcl_Merge(2, elemArgv);        ckfree(elemArgv[1]);    } else        newElement = NULL;    if (newElement == NULL) {        for (idx = fieldInfo.foundIdx; idx < fieldInfo.argc; idx++)            fieldInfo.argv[idx] = fieldInfo.argv[idx + 1];        fieldInfo.argc--;    } else        fieldInfo.argv[fieldInfo.foundIdx] = newElement;    newList = Tcl_Merge(fieldInfo.argc, fieldInfo.argv);    if (nameSeparPtr != NULL)        *nameSeparPtr = '.';    if (newElement != NULL)        ckfree(newElement);    ckfree((char *) fieldInfo.argv);    return newList;errorExit:    if (nameSeparPtr != NULL)        *nameSeparPtr = '.';    if (fieldInfo.argv != NULL)        ckfree((char *) fieldInfo.argv);    return NULL;}