[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [tyndur-devel] [PATCH v2 1/3] libc: lio_seek von FILE auf io_resource_t umgestellt



On Sat, Sep 24, 2011 at 04:17:48PM +0200, MNemo wrote:
> > diff --git a/src/modules/lib/lostio/client/seek.c b/src/modules/lib/lostio/client/seek.c
> > index 5f6108d..3cfcd6b 100644
> > --- a/src/modules/lib/lostio/client/seek.c
> > +++ b/src/modules/lib/lostio/client/seek.c
> > @@ -36,27 +36,22 @@
> >   *
> >   * @param io_res Dateihandle
> >   * @param offset Offset bezogen auf den mit origin festgelegten Ursprung
> > - * @param origin Ursprung. Moeglichkeiten: 
> > + * @param origin Ursprung. Moeglichkeiten:
> >   *                  - SEEK_SET Bezogen auf Dateianfang
> >   *                  - SEEK_CUR Bezogen auf die aktuelle Position
> >   *                  - SEEK_END Bezogen auf das Ende der Datei
> >   *
> >   * @return true wenn die Position erfolgreich gesetzt wurde, sonst false
> >   */
> > -bool lio_seek(FILE* io_res, uint64_t offset, int origin)
> > +bool lio_seek(io_resource_t* io_res, uint64_t offset, int origin)
> >  {
> >      io_seek_request_t seek_request;
> > -    
> > -    // Ungueltige Handles abfangen
> > -    if ((io_res == NULL) || (io_res->res->pid == 0)) {
> > -        return false;
> > -    }
> Warum nicht if ((io_res == NULL) || (io_res->pid == 0)) ?
> 
> Mir ist zwar nicht ganz klar was das mit der pid 0 auf sich hat, aber
> zumindest der nullptr ist doch immer noch genauso gefährlich wie vorher.

In erster Linie weil es konsistent mit den anderen Funktionen ist. Die
stdio-Funktionen haben die Prüfung drin (also hier fseek), während die
lio(_compat)_*-Funktionen nicht prüfen.

Die andere Frage wäre natürlich, ob es nicht gescheiter ist,
grundsätzlich abzustürzen, wenn man einen NULL-Pointer bekommt. Da ist
die Ursache dann vielleicht leichter sichtbar als wenn das Programm
anfängt, komische Sachen zu machen, weil der Fehler nicht richtig
behandelt wird.