commit 9d5bc2b6dc5fcdb93918bc03940f13ab1e3b13c6
Author: Grigory Batalov <bga@altlinux.org>
Date:   Fri Sep 4 04:58:42 2009 +0400

    Reset LC_NUMERIC in pj_init()
    
    Projection initialization converts string options to float numbers
    with locale-dependent atof() function. So, LC_NUMERIC should be
    reset to "C" in this routine.

diff --git a/proj/src/pj_init.c b/proj/src/pj_init.c
index 4c284b0..f93a466 100644
--- a/proj/src/pj_init.c
+++ b/proj/src/pj_init.c
@@ -81,6 +81,7 @@
 #include <stdio.h>
 #include <string.h>
 #include <errno.h>
+#include <locale.h>
 
 PJ_CVSID("$Id: pj_init.c,v 1.19 2007/11/26 00:21:59 fwarmerdam Exp $");
 
@@ -249,6 +250,9 @@ pj_init(int argc, char **argv) {
 	errno = pj_errno = 0;
         start = NULL;
 
+	const char *old_locale = setlocale(LC_NUMERIC, NULL);
+	setlocale(LC_NUMERIC, "C");
+
 	/* put arguments into internal linked list */
 	if (argc <= 0) { pj_errno = -1; goto bum_call; }
 	for (i = 0; i < argc; ++i)
@@ -397,6 +401,7 @@ bum_call: /* cleanup error return */
 			}
 		PIN = 0;
 	}
+	setlocale(LC_NUMERIC, old_locale);
 	return PIN;
 }
 

