[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