[Coin-discuss] Segmentation fault in CoinPackedMatrix
Matthew Galati
magh at lehigh.edu
Thu Jan 22 09:07:32 EST 2004
Looking over appendMajorVector again, I noticed that resize is only
called if the buffer for major dimension (cols) or number of elements is
exceeded. That is, it does handle the case where the minor dimension is
too small - hence, the throw statement. So, for using the append
functions, you do need to setDimensions first. It would be nice to have
a resize that can handle this. But, the current implementation makes
sense (in most cases), since typically you append columns then rows in
sequence. So, in each call to appendCol you are operating on a fixed
size of rows, and the number of columns is incremented. Then, when you
appendRow it has the right number of columns (which is again fixed). If
you do have an application that might add both at the same time, you can
call setDimensions to resize your matrix beforehand.
Matt
> Ok. I tried to add the COIN_DEBUG and it actually throws the exception if
> the minor dimension is not set to 2. If I do a check.setDimensions(2,0)
> then it works. As I read the code this must always be done? As you note,
> the only reason for having this throw block is a bug in the resize or that
> it is simply an invariant? And by the way the small code snip that I
> did seems to dump only on Linux and not MSV6 while the orginal code dumps
> on both. Obviously this was without COIN_DEBUG defined. The fix for now is
> to call setDimensions which is possible in my application since the number
> of rows is constant. Thanks.
>
> 'Jesper
--
Matthew Galati
ISE Lehigh University
IBM Service Parts Solutions
610.758.4042 (Office)
610.882.0779 (Home)
magh at lehigh.edu, magal11 at us.ibm.com
http://sagan.ie.lehigh.edu/mgalati/
More information about the Coin-discuss
mailing list