Skip site navigation (1)Skip section navigation (2)
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>