aboutsummaryrefslogtreecommitdiff
path: root/src/pj_init.c
diff options
context:
space:
mode:
authorFrank Warmerdam <warmerdam@pobox.com>2012-12-18 00:31:55 +0000
committerFrank Warmerdam <warmerdam@pobox.com>2012-12-18 00:31:55 +0000
commitb958c668175c791ef3781f554f56f19095c4170e (patch)
tree39f73a0ea87e44336e180478e5c95df1e619761e /src/pj_init.c
parent07e3b531884bdbc83f47a7a2328bca025e22f22e (diff)
downloadPROJ-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.c18
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;
}