Discussion:
[omniORB] Two bugs in omniidl
Will Denissen
2008-11-24 20:25:25 UTC
Permalink
Dear Duncan,

The following small idl files reveals two bugs in omniidl 4.1.3 cxx
backend

------------------- bug.idl ---------------------------------
module tst_mod {
const double C1 = 0.00000001;

typedef long T;

struct S_tag {
::tst_mod::T T;
::tst_mod::T S;
};
};
------------------- end of bug.idl ---------------------------



It will generate



------------------- bugSK.cc ---------------------------------

// This file is generated by omniidl (C++ backend)- omniORB_4_1. Do not
edit.

#include "bug.hh"
#include <omniORB4/IOP_S.h>
#include <omniORB4/IOP_C.h>
#include <omniORB4/callDescriptor.h>
#include <omniORB4/callHandle.h>
#include <omniORB4/objTracker.h>


OMNI_USING_NAMESPACE(omni)

static const char* _0RL_library_version = omniORB_4_1;



#if defined(HAS_Cplusplus_Namespace) && defined(_MSC_VER)
// MSVC++ does not give the constant external linkage othewise.
namespace tst_mod {
extern const ::CORBA::Double C1 = 1e-08.0;
}
#else
const ::CORBA::Double tst_mod::C1 = 1e-08.0;
#endif

void
tst_mod::S_tag::operator>>= (cdrStream &_n) const
{
T >>= _n;
S >>= _n;

}

void
tst_mod::S_tag::operator<<= (cdrStream &_n)
{
(tst_mod::T&)T <<= _n;
(T&)S <<= _n;

}

------------------- end of bugSK.cc --------------------------



BUG:

1) For the special constant C1 it will print the wrong value in C++.

2) For the second field of the structure the type is not fully
qualified

and therefore it is interpreted as being the 1st field of the
structure by the C++ compiler





Is there an easy fix for this?



Will.





W(ill).J.A. Denissen Ph.D

Principal Software Architect



ASML Netherlands B.V.

Building 7, De Run 6665,

5504 DT Veldhoven,

The Netherlands



Phone: +31.40.268.3277

Email: ***@asml.com

Web: www.asml.com
<file:///C:/Documents%20and%20Settings/wdenisse/Application%20Data/Micro
soft/Signatures/www.asml.com>
--
The information contained in this communication and any attachments is confidential and may be privileged, and is for the sole use of the intended recipient(s). Any unauthorized review, use, disclosure or distribution is prohibited. Unless explicitly stated otherwise in the body of this communication or the attachment thereto (if any), the information is provided on an AS-IS basis without any express or implied warranties or liabilities. To the extent you are relying on this information, you are doing so at your own risk. If you are not the intended recipient, please notify the sender immediately by replying to this message and destroy all copies of this message and any attachments. ASML is neither liable for the proper and complete transmission of the information contained in this communication, nor for any delay in its receipt.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.omniorb-support.com/pipermail/omniorb-list/attachments/20081124/1d1b733c/attachment.htm
Duncan Grisby
2008-12-03 16:59:28 UTC
Permalink
The following small idl files reveals two bugs in omniidl 4.1.3 cxx backend
Thanks for the bug report. I've fixed both. For the double constant bug
your proposed fix works. For the struct scope issue, the problem is
actually that the type lookup was failing to enter the struct scope so
it didn't notice the clash. Properly entering the scope means the type
is properly fully qualified in case of clashes.

Cheers,

Duncan.
--
-- Duncan Grisby --
-- ***@grisby.org --
-- http://www.grisby.org --
Loading...