From: Sandro Santilli Date: Tue, 17 Feb 2015 10:03:42 +0000 (+0000) Subject: Remove use of lw_vasprintf from liblwgeom X-Git-Tag: 2.2.0rc1~678 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=514c18980c1ca9049d322741608cf7b446be92b6;p=postgis Remove use of lw_vasprintf from liblwgeom Drops useless heap allocations git-svn-id: http://svn.osgeo.org/postgis/trunk@13219 b70326c6-7e19-0410-871a-916f4a2858ee --- diff --git a/liblwgeom/cunit/cu_tester.c b/liblwgeom/cunit/cu_tester.c index e05a6ee8d..2addc3a5f 100644 --- a/liblwgeom/cunit/cu_tester.c +++ b/liblwgeom/cunit/cu_tester.c @@ -242,19 +242,8 @@ int main(int argc, char *argv[]) static void cu_errorreporter(const char *fmt, va_list ap) { - char *msg; - - /** This is a GNU extension. - * Dunno how to handle errors here. - */ - if (!lw_vasprintf (&msg, fmt, ap)) - { - va_end (ap); - return; - } - - strncpy(cu_error_msg, msg, MAX_CUNIT_ERROR_LENGTH); - lwfree(msg); + vsnprintf (cu_error_msg, MAX_CUNIT_MSG_LENGTH, fmt, ap); + cu_error_msg[MAX_CUNIT_MSG_LENGTH]='\0'; } void diff --git a/liblwgeom/lwutil.c b/liblwgeom/lwutil.c index 713e6a286..745439fa9 100644 --- a/liblwgeom/lwutil.c +++ b/liblwgeom/lwutil.c @@ -23,6 +23,8 @@ static void default_errorreporter(const char *fmt, va_list ap); lwreporter lwnotice_var = default_noticereporter; lwreporter lwerror_var = default_errorreporter; +#define LW_MSG_MAXLEN 256 + static char *lwgeomTypeName[] = { "Unknown", @@ -108,37 +110,19 @@ default_reallocator(void *mem, size_t size) static void default_noticereporter(const char *fmt, va_list ap) { - char *msg; - - /* - * This is a GNU extension. - * Dunno how to handle errors here. - */ - if (!lw_vasprintf (&msg, fmt, ap)) - { - va_end (ap); - return; - } + char *msg[LW_MSG_MAXLEN+1]; + vsnprintf (msg, LW_MSG_MAXLEN, fmt, ap); + msg[LW_MSG_MAXLEN]='\0'; printf("%s\n", msg); - free(msg); } static void default_errorreporter(const char *fmt, va_list ap) { - char *msg; - - /* - * This is a GNU extension. - * Dunno how to handle errors here. - */ - if (!lw_vasprintf (&msg, fmt, ap)) - { - va_end (ap); - return; - } + char *msg[LW_MSG_MAXLEN+1]; + vsnprintf (msg, LW_MSG_MAXLEN, fmt, ap); + msg[LW_MSG_MAXLEN]='\0'; fprintf(stderr, "%s\n", msg); - free(msg); exit(1); }