diff --git a/src/xpdev/xpprintf.c b/src/xpdev/xpprintf.c index f75bab1bd8ed3922c32180ef788fe35117627e40..22fb7e43a48d510c23e8fb29f9dc132699b695c8 100644 --- a/src/xpdev/xpprintf.c +++ b/src/xpdev/xpprintf.c @@ -739,7 +739,10 @@ char* xp_asprintf_next(char *format, int type, ...) break; #endif case XP_PRINTF_TYPE_CHARP: - i=strtol(cp, NULL, 0); + if (cp) + i=strtol(cp, NULL, 0); + else + i = 0; break; case XP_PRINTF_TYPE_DOUBLE: i=(int)d; @@ -776,7 +779,10 @@ char* xp_asprintf_next(char *format, int type, ...) break; #endif case XP_PRINTF_TYPE_CHARP: - ui=strtoul(cp, NULL, 0); + if (cp) + ui=strtoul(cp, NULL, 0); + else + ui = 0; break; case XP_PRINTF_TYPE_DOUBLE: ui=(unsigned)d; @@ -813,7 +819,10 @@ char* xp_asprintf_next(char *format, int type, ...) break; #endif case XP_PRINTF_TYPE_CHARP: - l=strtol(cp, NULL, 0); + if (cp) + l=strtol(cp, NULL, 0); + else + l = 0; break; case XP_PRINTF_TYPE_DOUBLE: l=(long)d; @@ -850,7 +859,10 @@ char* xp_asprintf_next(char *format, int type, ...) break; #endif case XP_PRINTF_TYPE_CHARP: - ul=strtoul(cp, NULL, 0); + if (cp) + ul=strtoul(cp, NULL, 0); + else + ul = 0; break; case XP_PRINTF_TYPE_DOUBLE: ul=(unsigned long)d; @@ -886,7 +898,10 @@ char* xp_asprintf_next(char *format, int type, ...) ll=ull; break; case XP_PRINTF_TYPE_CHARP: - ll=strtoll(cp, NULL, 0); + if (cp) + ll=strtoll(cp, NULL, 0); + else + ll = 0; break; case XP_PRINTF_TYPE_DOUBLE: ll=d; @@ -921,7 +936,10 @@ char* xp_asprintf_next(char *format, int type, ...) ull=ll; break; case XP_PRINTF_TYPE_CHARP: - ull=strtoull(cp, NULL, 0); + if (cp) + ull=strtoull(cp, NULL, 0); + else + ull = 0; break; case XP_PRINTF_TYPE_DOUBLE: ull=d; @@ -1013,7 +1031,10 @@ char* xp_asprintf_next(char *format, int type, ...) break; #endif case XP_PRINTF_TYPE_CHARP: - d=strtod(cp, NULL); + if (cp) + d=strtod(cp, NULL); + else + d = 0.0; break; case XP_PRINTF_TYPE_LONGDOUBLE: d=ld; @@ -1050,11 +1071,14 @@ char* xp_asprintf_next(char *format, int type, ...) break; #endif case XP_PRINTF_TYPE_CHARP: + if (cp) #if defined(__BORLANDC__) - ld=strtod(cp, NULL); + ld=strtod(cp, NULL); #else - ld=strtold(cp, NULL); + ld=strtold(cp, NULL); #endif + else + ld = 0.0L; break; case XP_PRINTF_TYPE_DOUBLE: ld=d; @@ -1129,11 +1153,14 @@ char* xp_asprintf_next(char *format, int type, ...) break; #endif case XP_PRINTF_TYPE_CHARP: + if (cp) #if defined(__BORLANDC__) - s=strtoul(cp, NULL, 0); + s=strtoul(cp, NULL, 0); #else - s=strtoull(cp, NULL, 0); + s=strtoull(cp, NULL, 0); #endif + else + s = 0; break; case XP_PRINTF_TYPE_DOUBLE: s=(size_t)d;