[omniORB] omniORBpy sometimes corrupts wide strings

Andrew Novikov anovikov at artezio.ru
Tue Mar 9 13:51:50 GMT 2004


omniORBpy doesn't always marshal wstrings correctly. For instance, if
one defines:

// OMG IDL
struct MyStruct
{
	wstring a;
	wstring b;
};

interface Iface
{
	void foo(in MyStruct s);
};

then implements Iface in C++ and tries to call Iface.foo(s) from a
python program the call will fail on a server side with omniORB
complaining: 'omniORB: Garbage left at the end of input message from
giop:tcp:xxx'. Sometimes omniORB complains of incomplete message.
The above only occurs when running a python client from a Linux machine
(that always use UCS-4 as a native encoding for wide strings).
I've made a patch that fixes the problem for me and also eliminates (I
hope) extra wchar_t*->unsigned short*->unsigned long* conversion. It is
attached to the letter.
-- 
Andrew Novikov <anovikov at artezio.ru>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: omniORBpy-wstring-marshal.patch
Type: text/x-patch
Size: 1043 bytes
Desc: not available
Url : http://www.omniorb-support.com/pipermail/omniorb-list/attachments/20040309/8f4b550a/omniORBpy-wstring-marshal.bin


More information about the omniORB-list mailing list