rem: strncpy(nextByte, keyPtr, keySize);
add: strncpy(nextByte, keyPtr, (size_t)keySize);
context: Tcl_GetKeyedListKeys(interp, subFieldName, keyedList, keyesArgcPtr,    keyesArgvPtr)    Tcl_Interp     *interp;    CONST char     *subFieldName;    CONST char     *keyedList;    int            *keyesArgcPtr;    char         ***keyesArgvPtr;{    char           *scanPtr, *subFieldList;    int             result, keyCount, totalKeySize, idx;    char           *fieldPtr, *keyPtr, *nextByte, *dummyPtr;    int             fieldSize, keySize;    char          **keyArgv;    /*     * Skip leading white spaces in list.  This keeps totally empty lists     * with some white-spaces from being confused with empty field entries     * later on in the parsing.     */    for (; *keyedList != '\0'; keyedList++) {        if (ISSPACE(*keyedList) == 0)            break;    }    /*     * If the keys of a subfield are requested, the dig out that field's list     * and then rummage through it getting the keys.     */    subFieldList = NULL;    if ((subFieldName != NULL) && (subFieldName[0] != '\0')) {        result = Tcl_GetKeyedListField(interp, subFieldName, keyedList,            &subFieldList);        if (result != TCL_OK)            return result;        keyedList = subFieldList;    }    /*     * Walk the list count the number of field names and their length.     */    keyCount = 0;    totalKeySize = 0;    scanPtr = (char *) keyedList;    while (*scanPtr != '\0') {        result = TclFindElement(interp, scanPtr, &fieldPtr, &scanPtr,            &fieldSize, NULL);        if (result != TCL_OK)            goto errorExit;        result = TclFindElement(interp, fieldPtr, &keyPtr, &dummyPtr,            &keySize, NULL);        if (result != TCL_OK)            goto errorExit;        keyCount++;        totalKeySize += keySize + 1;    }    /*     * Allocate a structure to hold both the argv and strings.     */    keyArgv = (char **) ckalloc(((keyCount + 1) * sizeof(char *)) +        totalKeySize);    keyArgv[keyCount] = NULL;    nextByte = ((char *) keyArgv) + ((keyCount + 1) * sizeof(char *));    /*     * Walk the list once more, copying in the strings and building up the     * argv.     */    scanPtr = (char *) keyedList;    idx = 0;    while (*scanPtr != '\0') {        TclFindElement(interp, scanPtr, &fieldPtr, &scanPtr, &fieldSize,            NULL);        TclFindElement(interp, fieldPtr, &keyPtr, &dummyPtr, &keySize, NULL);        keyArgv[idx++] = nextByte;        strncpy(nextByte, keyPtr, keySize);        nextByte[keySize] = '\0';        nextByte += keySize + 1;    }    *keyesArgcPtr = keyCount;    *keyesArgvPtr = keyArgv;    if (subFieldList != NULL)        ckfree(subFieldList);    return TCL_OK;errorExit:    if (subFieldList != NULL)        ckfree(subFieldList);    return TCL_ERROR;}