From b958c668175c791ef3781f554f56f19095c4170e Mon Sep 17 00:00:00 2001 From: Frank Warmerdam Date: Tue, 18 Dec 2012 00:31:55 +0000 Subject: recover gracefully if setlocale() returns NULL like on Android (#204) git-svn-id: http://svn.osgeo.org/metacrs/proj/trunk@2305 4e78687f-474d-0410-85f9-8d5e500ac6b2 --- src/pj_init.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/pj_init.c b/src/pj_init.c index 67ca4a5e..bc8691f4 100644 --- a/src/pj_init.c +++ b/src/pj_init.c @@ -257,9 +257,14 @@ pj_init_ctx(projCtx ctx, int argc, char **argv) { ctx->last_errno = 0; start = NULL; - old_locale = strdup(setlocale(LC_NUMERIC, NULL)); - if( strcmp(old_locale,"C") != 0 ) - setlocale(LC_NUMERIC,"C"); + old_locale = setlocale(LC_NUMERIC, NULL); + if (old_locale != NULL) { + if (strcmp(old_locale,"C") != 0) { + setlocale(LC_NUMERIC,"C"); + old_locale = strdup(old_locale); + }else + old_locale = NULL; + } /* put arguments into internal linked list */ if (argc <= 0) { pj_ctx_set_errno( ctx, -1 ); goto bum_call; } @@ -468,9 +473,10 @@ pj_init_ctx(projCtx ctx, int argc, char **argv) { PIN = 0; } - if( strcmp(old_locale,"C") != 0 ) - setlocale(LC_NUMERIC,old_locale); - free( (char*)old_locale ); + if (old_locale != NULL) { + setlocale(LC_NUMERIC,old_locale); + free( (char*)old_locale ); + } return PIN; } -- cgit v1.2.3