diff options
| author | Frank Warmerdam <warmerdam@pobox.com> | 2012-12-18 00:31:55 +0000 |
|---|---|---|
| committer | Frank Warmerdam <warmerdam@pobox.com> | 2012-12-18 00:31:55 +0000 |
| commit | b958c668175c791ef3781f554f56f19095c4170e (patch) | |
| tree | 39f73a0ea87e44336e180478e5c95df1e619761e /src/pj_init.c | |
| parent | 07e3b531884bdbc83f47a7a2328bca025e22f22e (diff) | |
| download | PROJ-b958c668175c791ef3781f554f56f19095c4170e.tar.gz PROJ-b958c668175c791ef3781f554f56f19095c4170e.zip | |
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
Diffstat (limited to 'src/pj_init.c')
| -rw-r--r-- | src/pj_init.c | 18 |
1 files changed, 12 insertions, 6 deletions
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; } |
