Possible Bugs - extended & one more bug

Erez Hadad <[email protected]> Sun, 25 Sep 2005 22:57:39 +0300
Newsgroups gmane.comp.corba.orbacus
Message-ID <[email protected]>
Hi,

(Using JOB-4.1.3/JDK1.4.2/Linux)
I believe you have bugs in com.ooc.CORBA.InputStream: according to the 
CORBA/Java specification, the org.omg.CORBA.portable.InputStream (which you 
implement through com.ooc.CORBA.InputStream) should extend 
java.io.InputStream and conform to its specification. However, I have noticed 
the following two exceptions:
1. available() is not overridden, so it returns 0 even though there is data to 
be read from the stream.
A possible fix:
public int available()
throws IOException {
  int avail = buf_.len_ - buf_.pos_;
  return (avail >= 0 ? avail : 0);
}
2. read() returns the byte value of the stream's internal buffer 
(buf_.data_[pos++]), which is a byte value [-128, +127] rather than convert 
it to an int value in the range of [0, 255] as the Java specification 
requires. -1 should be returned only for an end-of-stream. Consequently, 
trying to read the stream as a Java byte-stream would fail prematurely.
A possible fix:
replace
return buf_.data_[buf_.pos_++];
with
return (0xff & buf_.data_[buf_.pos_++]);
3. The class com.ooc.CORBA.OutputStream contains a matching bug: the write() 
method does not conform to the java.io.OutputStream.write() specification. It 
is implemented as write_long() where it should only write a single byte - the 
least significant byte.
A possible fix:
replace
write_long(b);
with
write_octet((byte)b);

Please verify the bugs & fixes.

Regards,
Erez Hadad
_______________________________________________
OB-Users Mailing List - [email protected]
http://mail.ooc.nf.ca/mailman/listinfo/ob-users
Visit our support FAQ before you send a message.
http://www.orbacus.com/faq/support.html