[PATCH] Fix crash when pressing down arrow at the end of the dive list
Dirk Hohndel
dirk at hohndel.org
Tue May 7 06:56:16 PDT 2013
On Tue, 2013-05-07 at 10:49 -0300, Tomaz Canabrava wrote:
> then there's no need for the Clear() method that amit created.
That was my goal. The way I understood your explanation of how the code
works is that this function is automatically called whenever the
selection changes. So instead of having a clear function that we
manually need to call when we want the widget cleared, I figured it
would be smarter to have the widget magically DTRT(tm)
/D
> 2013/5/7 Dirk Hohndel <dirk at hohndel.org>
>
> No, that's wrong. Instead add the missing check where it
> crashed (which
> test did I miss...?). The UPDATE_TEXT macro already does the
> right thing
> and quite a few of the other The reason we DON'T want to
> simply return
> is that we want to clear out the widget if no dive is selected
> (in which
> case this will be called with -1 as argument.
>
> /D
>
> On Tue, 2013-05-07 at 08:40 +0200, subsurface at henrik.synth.no
> wrote:
> > From: Henrik Brautaset Aronsen <subsurface at henrik.synth.no>
> >
> > MainTab::updateDiveInfo tried to operate on a nonexistent
> dive
> > pointer from get_dive
> >
> > Signed-off-by: Henrik Brautaset Aronsen
> <subsurface at henrik.synth.no>
> > ---
> > qt-ui/maintab.cpp | 30 ++++++++++++++----------------
> > 1 file changed, 14 insertions(+), 16 deletions(-)
> >
> > diff --git a/qt-ui/maintab.cpp b/qt-ui/maintab.cpp
> > index 89501fc..12a526a 100644
> > --- a/qt-ui/maintab.cpp
> > +++ b/qt-ui/maintab.cpp
> > @@ -82,31 +82,29 @@ void MainTab::updateDiveInfo(int dive)
> > // the access is ui->objectName from here on.
> > volume_t sacVal;
> > struct dive *d = get_dive(dive);
> > +
> > + if (!d) return;
> > +
> > UPDATE_TEXT(d, notes);
> > UPDATE_TEXT(d, location);
> > UPDATE_TEXT(d, suit);
> > UPDATE_TEXT(d, divemaster);
> > UPDATE_TEXT(d, buddy);
> > - if (d)
> > - ui->rating->setCurrentStars(d->rating);
> > - else
> > - ui->rating->setCurrentStars(0);
> > +
> > + ui->rating->setCurrentStars(d->rating);
> >
> ui->maximumDepthText->setText(get_depth_string(d->maxdepth,
> TRUE));
> >
> ui->averageDepthText->setText(get_depth_string(d->meandepth,
> TRUE));
> > - sacVal.mliter = d ? d->sac : 0;
> > + sacVal.mliter = d->sac;
> > ui->sacText->setText(get_volume_string(sacVal,
> TRUE).append("/min"));
> > - ui->otuText->setText(QString("%1").arg( d ? d->otu :
> 0));
> > - ui->waterTemperatureText->setText(d ?
> get_temperature_string(d->watertemp, TRUE) : "");
> > - ui->airTemperatureText->setText(d ?
> get_temperature_string(d->airtemp, TRUE) : "");
> > - if (d && d->surface_pressure.mbar)
> > - /* this is ALWAYS displayed in mbar */
> > + ui->otuText->setText(QString("%1").arg(d->otu));
> > +
> ui->waterTemperatureText->setText(get_temperature_string(d->watertemp, TRUE));
> > +
> ui->airTemperatureText->setText(get_temperature_string(d->airtemp, TRUE));
> > +
> > + /* this is ALWAYS displayed in mbar */
> > + if (d->surface_pressure.mbar)
> > ui->airPressureText->setText(QString("%
> 1mbar").arg(d->surface_pressure.mbar));
> > - else
> > - ui->airPressureText->setText(QString(""));
> > - if (d)
> > -
> ui->gasUsedText->setText(get_volume_string(get_gas_used(d),
> TRUE));
> > - else
> > - ui->gasUsedText->setText("");
> > +
> > +
> ui->gasUsedText->setText(get_volume_string(get_gas_used(d),
> TRUE));
> > }
> >
> > void MainTab::on_addCylinder_clicked()
>
>
>
> _______________________________________________
> subsurface mailing list
> subsurface at hohndel.org
> http://lists.hohndel.org/cgi-bin/mailman/listinfo/subsurface
>
>
>
More information about the subsurface
mailing list