From 514c18980c1ca9049d322741608cf7b446be92b6 Mon Sep 17 00:00:00 2001 From: Sandro Santilli Date: Tue, 17 Feb 2015 10:03:42 +0000 Subject: [PATCH] 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 --- liblwgeom/cunit/cu_tester.c | 15 ++------------- liblwgeom/lwutil.c | 32 ++++++++------------------------ 2 files changed, 10 insertions(+), 37 deletions(-) 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); } -- 2.50.1