Date: Wed, 17 May 2006 14:41:31 -0400 From: Bill Moran <wmoran@collaborativefusion.com> To: Lorin Lund <wbs@infowest.com> Cc: greenwood.andy@gmail.com, freebsd-questions@freebsd.org Subject: Re: C coding question Message-ID: <20060517144131.96ee24a2.wmoran@collaborativefusion.com> In-Reply-To: <446B6D38.4070105@infowest.com> References: <3ee9ca710605171109i57ae4064x702216a1619d6c41@mail.gmail.com> <446B6D38.4070105@infowest.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 17 May 2006 12:36:40 -0600
Lorin Lund <wbs@infowest.com> wrote:
> Andy Greenwood wrote:
>
> > I am helping someone work on porting some code to Freebsd, and the
> > code below works on Linux, but not on FreeBSD (compiles, but gives
> > Segmentation Fault: 11). I'm not sure where the problem is, and any
> > pointers would be much appreciated.
> >
> > /* Check if we must stop */
> > if(tf_stat_file != NULL)
> > {
> > tf_stat = fopen(tf_stat_file, "r");
> > if (tf_stat != NULL)
> > {
> > /* Get state */
> > stat_state=fgetc(tf_stat);
> >
> > /* Torrentflux asked to shutdown the torrent */
> > if (stat_state == '0')
> > {
> > mustDie = 1;
> > }
> > }
> > fclose(tf_stat);
> > }
> > _______________________________________________
>
> I think I would move the
> fclose( tf_stat)
> up a line. No need to close a file that failed to open. The fclose( )
> acting on
> a NULL pointer might be your error.
>From man fclose:
The fclose() function does not handle NULL arguments; they will result in
a segmentation violation. This is intentional - it makes it easier to
make sure programs written under FreeBSD are bug free. This behaviour is
an implementation detail, and programs should not rely upon it.
Good catch.
--
Bill Moran
Collaborative Fusion Inc.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20060517144131.96ee24a2.wmoran>
