summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--py/modules/IcePy/Communicator.cpp4
-rw-r--r--py/modules/IcePy/Connection.cpp4
-rw-r--r--py/modules/IcePy/Current.cpp4
-rw-r--r--py/modules/IcePy/ImplicitContext.cpp6
-rw-r--r--py/modules/IcePy/ObjectAdapter.cpp2
-rw-r--r--py/modules/IcePy/Properties.cpp10
-rw-r--r--py/modules/IcePy/Proxy.cpp8
-rw-r--r--py/modules/IcePy/Types.cpp8
-rw-r--r--py/modules/IcePy/Util.cpp70
-rw-r--r--py/modules/IcePy/Util.h5
10 files changed, 63 insertions, 58 deletions
diff --git a/py/modules/IcePy/Communicator.cpp b/py/modules/IcePy/Communicator.cpp
index 61c9051aa8f..23231208a50 100644
--- a/py/modules/IcePy/Communicator.cpp
+++ b/py/modules/IcePy/Communicator.cpp
@@ -489,7 +489,7 @@ communicatorProxyToString(CommunicatorObject* self, PyObject* args)
return 0;
}
- return PyString_FromString(const_cast<char*>(str.c_str()));
+ return createString(str);
}
#ifdef WIN32
@@ -577,7 +577,7 @@ communicatorIdentityToString(CommunicatorObject* self, PyObject* args)
return 0;
}
- return PyString_FromString(const_cast<char*>(str.c_str()));
+ return createString(str);
}
#ifdef WIN32
diff --git a/py/modules/IcePy/Connection.cpp b/py/modules/IcePy/Connection.cpp
index 254952de8ae..3d6ddf0f1e8 100644
--- a/py/modules/IcePy/Connection.cpp
+++ b/py/modules/IcePy/Connection.cpp
@@ -236,7 +236,7 @@ connectionType(ConnectionObject* self)
return 0;
}
- return PyString_FromString(const_cast<char*>(type.c_str()));
+ return createString(type);
}
#ifdef WIN32
@@ -278,7 +278,7 @@ connectionToString(ConnectionObject* self)
return 0;
}
- return PyString_FromString(const_cast<char*>(str.c_str()));
+ return createString(str);
}
static PyMethodDef ConnectionMethods[] =
diff --git a/py/modules/IcePy/Current.cpp b/py/modules/IcePy/Current.cpp
index 10573868b43..455c17f6e5e 100644
--- a/py/modules/IcePy/Current.cpp
+++ b/py/modules/IcePy/Current.cpp
@@ -154,7 +154,7 @@ currentGetter(CurrentObject* self, void* closure)
{
if(!self->facet)
{
- self->facet = PyString_FromString(const_cast<char*>(self->current->facet.c_str()));
+ self->facet = createString(self->current->facet);
}
Py_INCREF(self->facet);
result = self->facet;
@@ -164,7 +164,7 @@ currentGetter(CurrentObject* self, void* closure)
{
if(!self->operation)
{
- self->operation = PyString_FromString(const_cast<char*>(self->current->operation.c_str()));
+ self->operation = createString(self->current->operation);
}
Py_INCREF(self->operation);
result = self->operation;
diff --git a/py/modules/IcePy/ImplicitContext.cpp b/py/modules/IcePy/ImplicitContext.cpp
index cec0805aaae..039ece7554c 100644
--- a/py/modules/IcePy/ImplicitContext.cpp
+++ b/py/modules/IcePy/ImplicitContext.cpp
@@ -178,7 +178,7 @@ implicitContextGet(ImplicitContextObject* self, PyObject* args)
setPythonException(ex);
return 0;
}
- return PyString_FromString(const_cast<char*>(val.c_str()));
+ return createString(val);
}
#ifdef WIN32
@@ -204,7 +204,7 @@ implicitContextPut(ImplicitContextObject* self, PyObject* args)
setPythonException(ex);
return 0;
}
- return PyString_FromString(const_cast<char*>(oldVal.c_str()));
+ return createString(oldVal);
}
#ifdef WIN32
@@ -229,7 +229,7 @@ implicitContextRemove(ImplicitContextObject* self, PyObject* args)
setPythonException(ex);
return 0;
}
- return PyString_FromString(const_cast<char*>(val.c_str()));
+ return createString(val);
}
static PyMethodDef ImplicitContextMethods[] =
diff --git a/py/modules/IcePy/ObjectAdapter.cpp b/py/modules/IcePy/ObjectAdapter.cpp
index ad9ded8b5f7..da0c780b1e3 100644
--- a/py/modules/IcePy/ObjectAdapter.cpp
+++ b/py/modules/IcePy/ObjectAdapter.cpp
@@ -314,7 +314,7 @@ adapterGetName(ObjectAdapterObject* self)
return 0;
}
- return PyString_FromString(const_cast<char*>(name.c_str()));
+ return createString(name);
}
#ifdef WIN32
diff --git a/py/modules/IcePy/Properties.cpp b/py/modules/IcePy/Properties.cpp
index 808a9997b9d..44c2bffcd90 100644
--- a/py/modules/IcePy/Properties.cpp
+++ b/py/modules/IcePy/Properties.cpp
@@ -163,7 +163,7 @@ propertiesStr(PropertiesObject* self)
str.append(p->first + "=" + p->second);
}
- return PyString_FromString(const_cast<char*>(str.c_str()));
+ return createString(str);
}
#ifdef WIN32
@@ -190,7 +190,7 @@ propertiesGetProperty(PropertiesObject* self, PyObject* args)
return 0;
}
- return PyString_FromString(const_cast<char*>(value.c_str()));
+ return createString(value);
}
#ifdef WIN32
@@ -218,7 +218,7 @@ propertiesGetPropertyWithDefault(PropertiesObject* self, PyObject* args)
return 0;
}
- return PyString_FromString(const_cast<char*>(value.c_str()));
+ return createString(value);
}
#ifdef WIN32
@@ -388,8 +388,8 @@ propertiesGetPropertiesForPrefix(PropertiesObject* self, PyObject* args)
{
for(Ice::PropertyDict::iterator p = dict.begin(); p != dict.end(); ++p)
{
- PyObjectHandle key = PyString_FromString(const_cast<char*>(p->first.c_str()));
- PyObjectHandle val = PyString_FromString(const_cast<char*>(p->second.c_str()));
+ PyObjectHandle key = createString(p->first);
+ PyObjectHandle val = createString(p->second);
if(!val.get() || PyDict_SetItem(result.get(), key.get(), val.get()) < 0)
{
return 0;
diff --git a/py/modules/IcePy/Proxy.cpp b/py/modules/IcePy/Proxy.cpp
index d0be96ba14d..27b8b45018a 100644
--- a/py/modules/IcePy/Proxy.cpp
+++ b/py/modules/IcePy/Proxy.cpp
@@ -104,7 +104,7 @@ static PyObject*
endpointToString(EndpointObject* self)
{
string str = (*self->endpoint)->toString();
- return PyString_FromString(const_cast<char*>(str.c_str()));
+ return createString(str);
}
//
@@ -184,7 +184,7 @@ static PyObject*
proxyRepr(ProxyObject* self)
{
string str = (*self->proxy)->ice_toString();
- return PyString_FromString(const_cast<char*>(str.c_str()));
+ return createString(str);
}
#ifdef WIN32
@@ -478,7 +478,7 @@ proxyIceGetFacet(ProxyObject* self)
return 0;
}
- return PyString_FromString(const_cast<char*>(facet.c_str()));
+ return createString(facet);
}
#ifdef WIN32
@@ -538,7 +538,7 @@ proxyIceGetAdapterId(ProxyObject* self)
return 0;
}
- return PyString_FromString(const_cast<char*>(id.c_str()));
+ return createString(id);
}
#ifdef WIN32
diff --git a/py/modules/IcePy/Types.cpp b/py/modules/IcePy/Types.cpp
index 3f4c2b8e5e8..1a9a5a94377 100644
--- a/py/modules/IcePy/Types.cpp
+++ b/py/modules/IcePy/Types.cpp
@@ -582,7 +582,7 @@ IcePy::PrimitiveInfo::unmarshal(const Ice::InputStreamPtr& is, const UnmarshalCa
case PrimitiveInfo::KindString:
{
string val = is->readString();
- PyObjectHandle p = PyString_FromString(val.c_str());
+ PyObjectHandle p = PyString_FromStringAndSize(val.c_str(), static_cast<Py_ssize_t>(val.size()));
cb->unmarshaled(p.get(), target, closure);
break;
}
@@ -1534,7 +1534,7 @@ IcePy::SequenceInfo::unmarshalPrimitiveSequence(const PrimitiveInfoPtr& pi, cons
for(int i = 0; i < sz; ++i)
{
- PyObjectHandle item = PyString_FromString(seq[i].c_str());
+ PyObjectHandle item = PyString_FromStringAndSize(seq[i].c_str(), static_cast<Py_ssize_t>(seq[i].size()));
if(!item.get())
{
throw AbortMarshaling();
@@ -3092,7 +3092,7 @@ IcePy_stringify(PyObject*, PyObject* args)
info->print(value, out, &history);
string str = ostr.str();
- return PyString_FromString(str.c_str());
+ return createString(str);
}
extern "C"
@@ -3115,5 +3115,5 @@ IcePy_stringifyException(PyObject*, PyObject* args)
info->print(value, out);
string str = ostr.str();
- return PyString_FromString(str.c_str());
+ return createString(str);
}
diff --git a/py/modules/IcePy/Util.cpp b/py/modules/IcePy/Util.cpp
index 513a32f4af2..ec835c0a1ec 100644
--- a/py/modules/IcePy/Util.cpp
+++ b/py/modules/IcePy/Util.cpp
@@ -423,8 +423,8 @@ IcePy::contextToDictionary(const Ice::Context& ctx, PyObject* dict)
for(Ice::Context::const_iterator p = ctx.begin(); p != ctx.end(); ++p)
{
- PyObjectHandle key = PyString_FromString(const_cast<char*>(p->first.c_str()));
- PyObjectHandle value = PyString_FromString(const_cast<char*>(p->second.c_str()));
+ PyObjectHandle key = createString(p->first);
+ PyObjectHandle value = createString(p->second);
if(!key.get() || !value.get())
{
return false;
@@ -504,68 +504,68 @@ convertLocalException(const Ice::LocalException& ex, PyObject* p)
}
catch(const Ice::InitializationException& e)
{
- IcePy::PyObjectHandle m = PyString_FromString(const_cast<char*>(e.reason.c_str()));
+ IcePy::PyObjectHandle m = IcePy::createString(e.reason);
PyObject_SetAttrString(p, STRCAST("reason"), m.get());
}
catch(const Ice::PluginInitializationException& e)
{
- IcePy::PyObjectHandle m = PyString_FromString(const_cast<char*>(e.reason.c_str()));
+ IcePy::PyObjectHandle m = IcePy::createString(e.reason);
PyObject_SetAttrString(p, STRCAST("reason"), m.get());
}
catch(const Ice::AlreadyRegisteredException& e)
{
IcePy::PyObjectHandle m;
- m = PyString_FromString(const_cast<char*>(e.kindOfObject.c_str()));
+ m = IcePy::createString(e.kindOfObject);
PyObject_SetAttrString(p, STRCAST("kindOfObject"), m.get());
- m = PyString_FromString(const_cast<char*>(e.id.c_str()));
+ m = IcePy::createString(e.id);
PyObject_SetAttrString(p, STRCAST("id"), m.get());
}
catch(const Ice::NotRegisteredException& e)
{
IcePy::PyObjectHandle m;
- m = PyString_FromString(const_cast<char*>(e.kindOfObject.c_str()));
+ m = IcePy::createString(e.kindOfObject);
PyObject_SetAttrString(p, STRCAST("kindOfObject"), m.get());
- m = PyString_FromString(const_cast<char*>(e.id.c_str()));
+ m = IcePy::createString(e.id);
PyObject_SetAttrString(p, STRCAST("id"), m.get());
}
catch(const Ice::TwowayOnlyException& e)
{
- IcePy::PyObjectHandle m = PyString_FromString(const_cast<char*>(e.operation.c_str()));
+ IcePy::PyObjectHandle m = IcePy::createString(e.operation);
PyObject_SetAttrString(p, STRCAST("operation"), m.get());
}
catch(const Ice::UnknownException& e)
{
- IcePy::PyObjectHandle m = PyString_FromString(const_cast<char*>(e.unknown.c_str()));
+ IcePy::PyObjectHandle m = IcePy::createString(e.unknown);
PyObject_SetAttrString(p, STRCAST("unknown"), m.get());
}
catch(const Ice::ObjectAdapterDeactivatedException& e)
{
- IcePy::PyObjectHandle m = PyString_FromString(const_cast<char*>(e.name.c_str()));
+ IcePy::PyObjectHandle m = IcePy::createString(e.name);
PyObject_SetAttrString(p, STRCAST("name"), m.get());
}
catch(const Ice::ObjectAdapterIdInUseException& e)
{
- IcePy::PyObjectHandle m = PyString_FromString(const_cast<char*>(e.id.c_str()));
+ IcePy::PyObjectHandle m = IcePy::createString(e.id);
PyObject_SetAttrString(p, STRCAST("id"), m.get());
}
catch(const Ice::NoEndpointException& e)
{
- IcePy::PyObjectHandle m = PyString_FromString(const_cast<char*>(e.proxy.c_str()));
+ IcePy::PyObjectHandle m = IcePy::createString(e.proxy);
PyObject_SetAttrString(p, STRCAST("proxy"), m.get());
}
catch(const Ice::EndpointParseException& e)
{
- IcePy::PyObjectHandle m = PyString_FromString(const_cast<char*>(e.str.c_str()));
+ IcePy::PyObjectHandle m = IcePy::createString(e.str);
PyObject_SetAttrString(p, STRCAST("str"), m.get());
}
catch(const Ice::IdentityParseException& e)
{
- IcePy::PyObjectHandle m = PyString_FromString(const_cast<char*>(e.str.c_str()));
+ IcePy::PyObjectHandle m = IcePy::createString(e.str);
PyObject_SetAttrString(p, STRCAST("str"), m.get());
}
catch(const Ice::ProxyParseException& e)
{
- IcePy::PyObjectHandle m = PyString_FromString(const_cast<char*>(e.str.c_str()));
+ IcePy::PyObjectHandle m = IcePy::createString(e.str);
PyObject_SetAttrString(p, STRCAST("str"), m.get());
}
catch(const Ice::IllegalIdentityException& e)
@@ -578,16 +578,16 @@ convertLocalException(const Ice::LocalException& ex, PyObject* p)
IcePy::PyObjectHandle m;
m = IcePy::createIdentity(e.id);
PyObject_SetAttrString(p, STRCAST("id"), m.get());
- m = PyString_FromString(const_cast<char*>(e.facet.c_str()));
+ m = IcePy::createString(e.facet);
PyObject_SetAttrString(p, STRCAST("facet"), m.get());
- m = PyString_FromString(const_cast<char*>(e.operation.c_str()));
+ m = IcePy::createString(e.operation);
PyObject_SetAttrString(p, STRCAST("operation"), m.get());
}
catch(const Ice::FileException& e)
{
IcePy::PyObjectHandle m = PyInt_FromLong(e.error);
PyObject_SetAttrString(p, STRCAST("error"), m.get());
- m = PyString_FromString(const_cast<char*>(e.path.c_str()));
+ m = IcePy::createString(e.path);
PyObject_SetAttrString(p, STRCAST("path"), m.get());
}
catch(const Ice::SyscallException& e) // This must appear after all subclasses of SyscallException.
@@ -600,7 +600,7 @@ convertLocalException(const Ice::LocalException& ex, PyObject* p)
IcePy::PyObjectHandle m;
m = PyInt_FromLong(e.error);
PyObject_SetAttrString(p, STRCAST("error"), m.get());
- m = PyString_FromString(const_cast<char*>(e.host.c_str()));
+ m = IcePy::createString(e.host);
PyObject_SetAttrString(p, STRCAST("host"), m.get());
}
catch(const Ice::UnsupportedProtocolException& e)
@@ -630,34 +630,34 @@ convertLocalException(const Ice::LocalException& ex, PyObject* p)
catch(const Ice::NoObjectFactoryException& e)
{
IcePy::PyObjectHandle m;
- m = PyString_FromString(const_cast<char*>(e.reason.c_str()));
+ m = IcePy::createString(e.reason);
PyObject_SetAttrString(p, STRCAST("reason"), m.get());
- m = PyString_FromString(const_cast<char*>(e.type.c_str()));
+ m = IcePy::createString(e.type);
PyObject_SetAttrString(p, STRCAST("type"), m.get());
}
catch(const Ice::UnexpectedObjectException& e)
{
IcePy::PyObjectHandle m;
- m = PyString_FromString(const_cast<char*>(e.reason.c_str()));
+ m = IcePy::createString(e.reason);
PyObject_SetAttrString(p, STRCAST("reason"), m.get());
- m = PyString_FromString(const_cast<char*>(e.type.c_str()));
+ m = IcePy::createString(e.type);
PyObject_SetAttrString(p, STRCAST("type"), m.get());
- m = PyString_FromString(const_cast<char*>(e.expectedType.c_str()));
+ m = IcePy::createString(e.expectedType);
PyObject_SetAttrString(p, STRCAST("expectedType"), m.get());
}
catch(const Ice::ProtocolException& e) // This must appear after all subclasses of ProtocolException.
{
- IcePy::PyObjectHandle m = PyString_FromString(const_cast<char*>(e.reason.c_str()));
+ IcePy::PyObjectHandle m = IcePy::createString(e.reason);
PyObject_SetAttrString(p, STRCAST("reason"), m.get());
}
catch(const Ice::FeatureNotSupportedException& e)
{
- IcePy::PyObjectHandle m = PyString_FromString(const_cast<char*>(e.unsupportedFeature.c_str()));
+ IcePy::PyObjectHandle m = IcePy::createString(e.unsupportedFeature);
PyObject_SetAttrString(p, STRCAST("unsupportedFeature"), m.get());
}
catch(const Ice::SecurityException& e)
{
- IcePy::PyObjectHandle m = PyString_FromString(const_cast<char*>(e.reason.c_str()));
+ IcePy::PyObjectHandle m = IcePy::createString(e.reason);
PyObject_SetAttrString(p, STRCAST("reason"), m.get());
}
catch(const Ice::LocalException&)
@@ -700,7 +700,7 @@ IcePy::convertException(const Ice::Exception& ex)
p = createExceptionInstance(type);
if(p.get())
{
- PyObjectHandle s = PyString_FromString(const_cast<char*>(str.c_str()));
+ PyObjectHandle s = createString(str);
PyObject_SetAttrString(p.get(), STRCAST("unknown"), s.get());
}
}
@@ -712,7 +712,7 @@ IcePy::convertException(const Ice::Exception& ex)
p = createExceptionInstance(type);
if(p.get())
{
- PyObjectHandle s = PyString_FromString(const_cast<char*>(str.c_str()));
+ PyObjectHandle s = createString(str);
PyObject_SetAttrString(p.get(), STRCAST("unknown"), s.get());
}
}
@@ -723,7 +723,7 @@ IcePy::convertException(const Ice::Exception& ex)
p = createExceptionInstance(type);
if(p.get())
{
- PyObjectHandle s = PyString_FromString(const_cast<char*>(str.c_str()));
+ PyObjectHandle s = createString(str);
PyObject_SetAttrString(p.get(), STRCAST("unknown"), s.get());
}
}
@@ -832,8 +832,8 @@ bool
IcePy::setIdentity(PyObject* p, const Ice::Identity& ident)
{
assert(checkIdentity(p));
- PyObjectHandle name = PyString_FromString(const_cast<char*>(ident.name.c_str()));
- PyObjectHandle category = PyString_FromString(const_cast<char*>(ident.category.c_str()));
+ PyObjectHandle name = createString(ident.name);
+ PyObjectHandle category = createString(ident.category);
if(!name.get() || !category.get())
{
return false;
@@ -902,7 +902,7 @@ IcePy_identityToString(PyObject* /*self*/, PyObject* args)
IcePy::setPythonException(ex);
return 0;
}
- return PyString_FromString(const_cast<char*>(s.c_str()));
+ return IcePy::createString(s);
}
extern "C"
@@ -934,5 +934,5 @@ PyObject*
IcePy_generateUUID(PyObject* /*self*/)
{
string uuid = IceUtil::generateUUID();
- return PyString_FromString(const_cast<char*>(uuid.c_str()));
+ return IcePy::createString(uuid);
}
diff --git a/py/modules/IcePy/Util.h b/py/modules/IcePy/Util.h
index 104a259277a..a9b084ecbee 100644
--- a/py/modules/IcePy/Util.h
+++ b/py/modules/IcePy/Util.h
@@ -47,6 +47,11 @@ inline PyObject* getTrue()
return reinterpret_cast<PyObject*>(i);
}
+inline PyObject* createString(const std::string& str)
+{
+ return PyString_FromStringAndSize(str.c_str(), static_cast<Py_ssize_t>(str.size()));
+}
+
//
// Invokes Py_DECREF on a Python object.
//