One last shot, I've found that this is unexpected by the vector code:
void resize(size_t n) {
if (n < size_)
erase(ptr_ + n, ptr_ + size_);
else if (n > size_)
append(n - size_);
But in this case:
(gdb) p n
$39 = 2
(gdb) p size_
$40 = 2
So it would need to do NOTHING!
It already is at the requested size.
I found through gdb that it does that correctly.
The first call is:
(gdb) p n
$39 = 2
(gdb) p size_
$40 = 2
and it does nothing.
Then next time it is
(gdb) p size_
$43 = 2
(gdb) p n
$44 = 1
And it will call erase.
(gdb) p *(ptr_+0)
$49 = {_vptr.Owner = 0xfffff7f8a040 <vtable for
OpenSP::Owner<OpenJade_DSSSL::Expression>+16>, p_ = 0xaaaaab46f9f0}
(gdb) p *(ptr_+1)
$50 = {_vptr.Owner = 0xfffff7f8a040 <vtable for
OpenSP::Owner<OpenJade_DSSSL::Expression>+16>, p_ = 0x0}
(gdb) p *(ptr_+2)
$51 = {_vptr.Owner = 0x6c00000063, p_ = 0x1d1}
So it thinks it increases (but it doesn't) and then it decreases the vector and
fails.
Hrm, still nothing to fix in there.
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1869734
Title:
openjade segfaults on arm (due to gcc optimization)
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/openjade/+bug/1869734/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs