<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<TITLE>Message</TITLE>

<META content="MSHTML 6.00.2900.2180" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><SPAN class=712024116-02052008><FONT face=Arial color=#0000ff size=2>Make 
that *msg=message - I'm not paying attention either..</FONT></SPAN></DIV>
<BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px">
  <DIV></DIV>
  <DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left><FONT 
  face=Tahoma size=2>-----Original Message-----<BR><B>From:</B> 
  omniorb-list-bounces@omniorb-support.com 
  [mailto:omniorb-list-bounces@omniorb-support.com] <B>On Behalf Of </B>William 
  Bauder<BR><B>Sent:</B> Friday, May 02, 2008 11:48 AM<BR><B>To:</B> 'Tom 
  O'Reilly'; 'Luke Deller'<BR><B>Cc:</B> 
  omniorb-list@omniorb-support.com<BR><B>Subject:</B> RE: [omniORB] Can't 
  compile client that retrievesastructwhichcontains a 
  sequence<BR><BR></FONT></DIV>
  <DIV><SPAN class=704203315-02052008><FONT face=Arial color=#0000ff size=2>Look 
  closely at the code - you're not actually returning anything (you need 
  *msg=&amp;_message).&nbsp; You should still use the Message_out as the 
  parameter type, instead of Message* - you'll have less heartache down the 
  road.</FONT></SPAN></DIV>
  <DIV><SPAN class=704203315-02052008><FONT face=Arial color=#0000ff 
  size=2></FONT></SPAN>&nbsp;</DIV>
  <DIV><SPAN class=704203315-02052008><FONT face=Arial color=#0000ff size=2>To 
  the best of my knowledge, only the _var and _ptr types deal with memory 
  management - I believe that the _out stores a copy of what you give it, but 
  I'm not an expert in this area by any stretch of the imagination.&nbsp; What 
  you are doing should be fine as long as you return something (assuming that 
  you've initialized all of _message's members somewhere).</FONT></SPAN></DIV>
  <DIV><SPAN class=704203315-02052008><FONT face=Arial color=#0000ff 
  size=2></FONT></SPAN>&nbsp;</DIV>
  <DIV><SPAN class=704203315-02052008><FONT face=Arial color=#0000ff 
  size=2>-Bill</FONT></SPAN></DIV>
  <BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px">
    <DIV></DIV>
    <DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left><FONT 
    face=Tahoma size=2>-----Original Message-----<BR><B>From:</B> 
    omniorb-list-bounces@omniorb-support.com 
    [mailto:omniorb-list-bounces@omniorb-support.com] <B>On Behalf Of </B>Tom 
    O'Reilly<BR><B>Sent:</B> Thursday, May 01, 2008 4:14 PM<BR><B>To:</B> Tom 
    O'Reilly; Luke Deller<BR><B>Cc:</B> 
    omniorb-list@omniorb-support.com<BR><B>Subject:</B> Re: [omniORB] Can't 
    compile client that retrieves astructwhichcontains a 
    sequence<BR><BR></FONT></DIV>
    <DIV><FONT face=Arial size=2>Ah, I see now.</FONT></DIV>
    <DIV><FONT face=Arial size=2>The server implementation must allocate a 
    SequenceTestIF::Message on the heap (using new operator), since the CORBA 
    framework will automatically try to delete it after the function call is 
    complete - right?</FONT></DIV>
    <DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
    <DIV><FONT face=Arial size=2>Thanks,</FONT></DIV>
    <DIV><FONT face=Arial size=2>Tom</FONT></DIV>
    <DIV>&nbsp;</DIV>
    <BLOCKQUOTE 
    style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
      <DIV style="FONT: 10pt arial">----- Original Message ----- </DIV>
      <DIV 
      style="BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: black"><B>From:</B> 
      <A title=oreilly@mbari.org href="mailto:oreilly@mbari.org">Tom 
      O'Reilly</A> </DIV>
      <DIV style="FONT: 10pt arial"><B>To:</B> <A title=ldeller@iress.com.au 
      href="mailto:ldeller@iress.com.au">Luke Deller</A> </DIV>
      <DIV style="FONT: 10pt arial"><B>Cc:</B> <A 
      title=omniorb-list@omniorb-support.com 
      href="mailto:omniorb-list@omniorb-support.com">omniorb-list@omniorb-support.com</A> 
      </DIV>
      <DIV style="FONT: 10pt arial"><B>Sent:</B> Thursday, May 01, 2008 11:45 
      AM</DIV>
      <DIV style="FONT: 10pt arial"><B>Subject:</B> Re: [omniORB] Can't compile 
      client that retrieves a structwhichcontains a sequence</DIV>
      <DIV><BR></DIV>
      <DIV><BR><FONT face=Arial size=2>&gt; So you don't actually construct a 
      Message_out instance explicitly.&nbsp; Basically you want to pass a 
      reference to a </FONT></DIV>
      <DIV><FONT face=Arial size=2>&gt; pointer, so that the function can point 
      your pointer at the returned message:</FONT></DIV>
      <DIV><FONT face=Arial size=2>&gt;<BR>&gt;<BR>&gt;&nbsp;&nbsp;&nbsp; 
      SequenceTestIF::Message *msgptr;<BR>&gt;&nbsp;&nbsp;&nbsp; 
      seqTest-&gt;getMessage(msgptr);<BR>&gt;&nbsp;&nbsp;&nbsp; // now you can 
      use msgptr-&gt;body<BR>&gt;&nbsp;&nbsp;&nbsp; 
      seqTest-&gt;setMessage(*msgptr);<BR>&gt;&nbsp;&nbsp;&nbsp; delete 
      msgptr;<BR><BR>OK, but I'm still a bit confused. What does the server 
      implementation code do with the passed-in msgptr, which is null (it IS 
      null to start with, right?)&nbsp; Is it something like this:</FONT></DIV>
      <DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
      <DIV><FONT face="Courier New" size=2>&nbsp; Server code:</FONT></DIV>
      <DIV><FONT face="Courier New" size=2></FONT>&nbsp;</DIV>
      <DIV><FONT face="Courier New" size=2>&nbsp;&nbsp; class SequenceTestServer 
      {</FONT></DIV>
      <DIV><FONT face="Courier New" size=2></FONT>&nbsp;</DIV>
      <DIV><FONT face="Courier New" size=2>&nbsp;&nbsp;&nbsp;&nbsp; void 
      getMessage(SequenceTestIF::Message *msg() {</FONT></DIV>
      <DIV><FONT face="Courier New" 
      size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msg = 
      &amp;_message;</FONT></DIV>
      <DIV><FONT face="Courier New" 
      size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      return;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT color=#ff0000>// Server 
      encounters seg-fault after return statement.</FONT></FONT></DIV>
      <DIV><FONT face="Courier New" size=2>&nbsp;&nbsp;&nbsp;&nbsp; 
      }</FONT></DIV>
      <DIV><FONT face="Courier New" size=2></FONT>&nbsp;</DIV>
      <DIV><FONT face="Courier New" size=2>&nbsp;&nbsp;&nbsp;&nbsp; // Define a 
      Message member</FONT></DIV>
      <DIV><FONT face="Courier New" size=2>&nbsp;&nbsp;&nbsp;&nbsp; 
      SequenceTestIF::Message _message;</FONT></DIV>
      <DIV><FONT face="Courier New" size=2>&nbsp;&nbsp; };</FONT></DIV>
      <DIV><FONT face="Courier New" size=2></FONT>&nbsp;</DIV>
      <DIV><FONT face="Courier New" size=2></FONT>&nbsp;</DIV>
      <DIV><FONT face="Courier New" size=2></FONT>&nbsp;</DIV>
      <DIV><FONT face=Arial size=2>I tried something like this, but the server 
      gets a segmentation fault after returning from getMessage().</FONT></DIV>
      <DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
      <DIV><FONT face=Arial size=2>Many thanks,</FONT></DIV>
      <DIV><FONT face=Arial size=2>Tom</FONT></DIV>
      <DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
      <P>
      <HR>

      <P></P>_______________________________________________<BR>omniORB-list 
      mailing 
      list<BR>omniORB-list@omniorb-support.com<BR>http://www.omniorb-support.com/mailman/listinfo/omniorb-list<BR></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BODY></HTML>