Ok, great - thanks, Ted!

> -----Original Message-----
> From: Ted Ross [mailto:[email protected]] 
> Sent: Tuesday, December 23, 2008 1:20 PM
> To: Steve Huston
> Cc: [email protected]; [email protected]
> Subject: Re: QPID-1449
> 
> 
> Steve Huston wrote:
> > Hi Ted,
> >
> > Rajith suggested we work out what, if anything, to do for 
> QPID-1449 on
> > the dev list... I think we were talking about separate patches.
You
> > originally said you had one, but that it shouldn't be necessary
> > because the base issue would not really be resolved. Yesterday I
> > believe I resolved the base issue after the same problem 
> showed up in
> > a different context. I came up with the following patch (it's also
> > attached to the jira). Tested on Windows ok.
> >
> > The issue is that if there's 0 size for the vector, the 
> Visual C++ C++
> > lib won't allocate any space, so trying to take the address of it
is
> > invalid - this is what the range check in the C++ lib run time is
> > complaining about.
> >
> > Do you see a problem with this patch?
> >
> > Index: FieldValue.h
> >
===================================================================
> > --- FieldValue.h    (revision 727451)
> > +++ FieldValue.h    (working copy)
> > @@ -193,12 +193,14 @@
> >      uint32_t encodedSize() const { return lenwidth + 
> octets.size(); }
> >
> >      void encode(Buffer& buffer) {
> >          buffer.putUInt<lenwidth>(octets.size());
> > -        buffer.putRawData(&octets[0], octets.size());
> > +        if (octets.size() > 0)
> > +            buffer.putRawData(&octets[0], octets.size());
> >      };
> >      void decode(Buffer& buffer) {
> >          uint32_t len = buffer.getUInt<lenwidth>();
> >          octets.resize(len);
> > -        buffer.getRawData(&octets[0], len);
> > +        if (len > 0)
> > +            buffer.getRawData(&octets[0], len);
> >      }
> >      bool operator==(const Data& d) const {
> >          const VariableWidthValue<lenwidth>* rhs = 
> dynamic_cast< const
> > VariableWidthValue<lenwidth>* >(&d);
> >
> >   
> Steve,
> 
> The patch looks fine.  Since it fixes a bug that affects Windows, I 
> think it should be committed.
> 
> The patch that I committed fixed a problem in management 
> where a string 
> that should have been initialized was not.  My patch only 
> fixed one of 
> many possible occurrences of this problem which is why I 
> didn't resolve 
> the Jira.
> 
> -Ted
> 

Reply via email to