From 1ee5e1a17cbd50f84990fb43fac7e8c811e604a9 Mon Sep 17 00:00:00 2001 From: Michael Stahl Date: Wed, 10 Jun 2015 13:07:17 +0200 Subject: pyuno: remove obsolete LC_NUMERIC to "C" mangling code The CPython changelog says for version 2.4: - Python no longer relies on the LC_NUMERIC locale setting to be the "C" locale; as a result, it no longer tries to prevent changing the LC_NUMERIC category. Change-Id: I6d63c4dedca48c99bf81135d69285d9116a19740 --- pyuno/source/module/pyuno_runtime.cxx | 44 ----------------------------------- 1 file changed, 44 deletions(-) (limited to 'pyuno') diff --git a/pyuno/source/module/pyuno_runtime.cxx b/pyuno/source/module/pyuno_runtime.cxx index 309f148a2a6c..2509997977a1 100644 --- a/pyuno/source/module/pyuno_runtime.cxx +++ b/pyuno/source/module/pyuno_runtime.cxx @@ -29,7 +29,6 @@ #include #include #include -#include #include @@ -982,26 +981,6 @@ Any Runtime::extractUnoException( const PyRef & excType, const PyRef &excValue, } -static const char * g_NUMERICID = "pyuno.lcNumeric"; -static ::std::vector< OString > g_localeList; - -static const char *ensureUnlimitedLifetime( const char *str ) -{ - int size = g_localeList.size(); - int i; - for( i = 0 ; i < size ; i ++ ) - { - if( 0 == strcmp( g_localeList[i].getStr(), str ) ) - break; - } - if( i == size ) - { - g_localeList.push_back( str ); - } - return g_localeList[i].getStr(); -} - - PyThreadAttach::PyThreadAttach( PyInterpreterState *interp) throw ( com::sun::star::uno::RuntimeException ) { @@ -1009,35 +988,18 @@ PyThreadAttach::PyThreadAttach( PyInterpreterState *interp) if( !tstate ) throw RuntimeException( "Couldn't create a pythreadstate" ); PyEval_AcquireThread( tstate); - // set LC_NUMERIC to "C" - const char * oldLocale = - ensureUnlimitedLifetime( setlocale( LC_NUMERIC, 0 ) ); - setlocale( LC_NUMERIC, "C" ); - PyRef locale( // python requires C locale - PyLong_FromVoidPtr( const_cast(oldLocale) ), SAL_NO_ACQUIRE); - PyDict_SetItemString( - PyThreadState_GetDict(), g_NUMERICID, locale.get() ); } PyThreadAttach::~PyThreadAttach() { - PyObject *value = - PyDict_GetItemString( PyThreadState_GetDict( ), g_NUMERICID ); - if( value ) - setlocale( LC_NUMERIC, static_cast(PyLong_AsVoidPtr( value )) ); PyThreadState_Clear( tstate ); PyEval_ReleaseThread( tstate ); PyThreadState_Delete( tstate ); - } PyThreadDetach::PyThreadDetach() throw ( com::sun::star::uno::RuntimeException ) { tstate = PyThreadState_Get(); - PyObject *value = - PyDict_GetItemString( PyThreadState_GetDict( ), g_NUMERICID ); - if( value ) - setlocale( LC_NUMERIC, static_cast(PyLong_AsVoidPtr( value )) ); PyEval_ReleaseThread( tstate ); } @@ -1047,12 +1009,6 @@ PyThreadDetach::PyThreadDetach() throw ( com::sun::star::uno::RuntimeException ) PyThreadDetach::~PyThreadDetach() { PyEval_AcquireThread( tstate ); -// PyObject *value = -// PyDict_GetItemString( PyThreadState_GetDict( ), g_NUMERICID ); - - // python requires C LC_NUMERIC locale, - // always set even when it is already "C" - setlocale( LC_NUMERIC, "C" ); } -- cgit