void CRYPTO_free(void *str)
{
#ifndef OPENSSL_NO_CRYPTO_MDEBUG
    if (call_malloc_debug) {
        CRYPTO_mem_debug_free(str, 0);
        free(str);
        CRYPTO_mem_debug_free(str, 1);
    } else {
        free(str);
    }
#else
    free(str);
#endif
}
['_STACK *sk_dup(_STACK *sk)\n{\n    _STACK *ret;\n    char **s;\n    if ((ret = sk_new(sk->comp)) == NULL)\n        goto err;\n    s = OPENSSL_realloc((char *)ret->data,\n                        (unsigned int)sizeof(char *) * sk->num_alloc);\n    if (s == NULL)\n        goto err;\n    ret->data = s;\n    ret->num = sk->num;\n    memcpy(ret->data, sk->data, sizeof(char *) * sk->num);\n    ret->sorted = sk->sorted;\n    ret->num_alloc = sk->num_alloc;\n    ret->comp = sk->comp;\n    return (ret);\n err:\n    sk_free(ret);\n    return (NULL);\n}', 'void *CRYPTO_realloc(void *str, size_t num, const char *file, int line)\n{\n    if (str == NULL)\n        return CRYPTO_malloc(num, file, line);\n    if (num == 0) {\n        CRYPTO_free(str);\n        return NULL;\n    }\n    allow_customize = 0;\n#ifndef OPENSSL_NO_CRYPTO_MDEBUG\n    if (call_malloc_debug) {\n        void *ret;\n        CRYPTO_mem_debug_realloc(str, NULL, num, 0, file, line);\n        ret = realloc(str, num);\n        CRYPTO_mem_debug_realloc(str, ret, num, 1, file, line);\n        return ret;\n    }\n#else\n    (void)file;\n    (void)line;\n#endif\n    return realloc(str, num);\n}', 'void CRYPTO_free(void *str)\n{\n#ifndef OPENSSL_NO_CRYPTO_MDEBUG\n    if (call_malloc_debug) {\n        CRYPTO_mem_debug_free(str, 0);\n        free(str);\n        CRYPTO_mem_debug_free(str, 1);\n    } else {\n        free(str);\n    }\n#else\n    free(str);\n#endif\n}', 'void sk_free(_STACK *st)\n{\n    if (st == NULL)\n        return;\n    OPENSSL_free(st->data);\n    OPENSSL_free(st);\n}']