[kde-edu]: [Repinging] Trying to fix - https://bugs.kde.org/show_bug.cgi?id=178572
Madhusudan C.S
madhusudancs at gmail.com
Tue Feb 3 06:56:05 CET 2009
Hi Vladimir,
I just went through the code as you suggested through gdb.
On Mon, Feb 2, 2009 at 2:30 AM, Vladimir Kuznetsov <ks.vladimir at gmail.com>wrote:
>
> To check why it can be NULL, let's look at a point where the index is
> created.
> There are several functions in WorldModel which returns QModelIndex, but
> all
> of them uses WorldModel::solverIndex() function to obtain index for solver
> which in turn calls StepCore::World::solver() function which just returns
> _solver member of the World class.
>
> Next we have to look at where that member (World::_solver) is initialized.
> There is World::setSolver function that sets it and it is called by
> WorldModel::swapSolver function which in turn is called by CommandSetSolver
> class which is created in WorldModel::newSolver function.
> You could check using debugger whether WorldModel::newSolver receives a
> correct solver class name as an argument and whether the solver is created
> correctly. Then you could check whether it is correctly passed passed to
> swapSolver function.
>
These are the results I got. For convenience I am pasting the
method here where the problem is occuring, please forgive :)
StepCore::Solver* WorldModel::swapSolver(StepCore::Solver* solver)
{
bool selected = selectionModel()->isSelected(solverIndex());
bool current = selectionModel()->currentIndex() == solverIndex();
beginRemoveRows(QModelIndex(), 1, 1);
StepCore::Solver* oldSolver = _world->removeSolver();
endRemoveRows();
beginInsertRows(QModelIndex(), 1, 1);
_world->setSolver(solver);
endInsertRows();
if(selected) selectionModel()->select(solverIndex(),
QItemSelectionModel::Select);
if(current) selectionModel()->setCurrentIndex(solverIndex(),
QItemSelectionModel::Current);
emitChanged(true, true);
return oldSolver;
}
Everything seems to be fine until first call goes to beginRemoveRows ()
and then to _world->removeSolver(), but the program crashes when
endRemoveRows() is called. Still not sure whats causing it. But I still did
not understand why a new object QModelIndex() was created and passed
to beginRemoveRows. Is that causing some kind of problem? The API
asks to pass the parent index but we pass a newly created index.
Is that all Ok?
--
Thanks and regards,
Madhusudan.C.S
Blogs at: www.madhusudancs.info
Official Email ID: madhusudan at madhusudancs.info
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.kde.org/pipermail/kde-edu/attachments/20090203/fd900d6a/attachment.htm
More information about the kde-edu
mailing list