diff options
| -rw-r--r-- | src/main.c | 12 | 
1 files changed, 10 insertions, 2 deletions
| diff --git a/src/main.c b/src/main.c index ab5bbc595..4867d1a0e 100644 --- a/src/main.c +++ b/src/main.c @@ -3225,13 +3225,21 @@ CURLcode _my_setopt(CURL *curl, const char *name, CURLoption tag, ...)    }    else if(tag < CURLOPTTYPE_OFF_T) { -    /* we treat both object and function pointers like this */      void *pval = va_arg(arg, void *);      unsigned char *ptr = (unsigned char *)pval; +    /* function pointers are never printable */ +    if (tag >= CURLOPTTYPE_FUNCTIONPOINT) { +      if (pval) { +        snprintf(value, sizeof(value), "%p", pval); +        remark = TRUE; +      } +      else +        strcpy(value, "NULL"); +    }      /* attempt to figure out if it is a string (since the tag numerical doesn't         offer this info) and then output it as a string if so */ -    if(pval && isgraph(ptr[0]) && isgraph(ptr[1])) +    else if(pval && isgraph(ptr[0]) && isgraph(ptr[1]))        snprintf(value, sizeof(value), "\"%s\"", (char *)ptr);      else if(pval) {        snprintf(value, sizeof(value), "%p", pval); | 
