Re: [HACKERS] Does this make sense:

Поиск
Список
Период
Сортировка
От Bruce Momjian
Тема Re: [HACKERS] Does this make sense:
Дата
Msg-id 199812141643.LAA23706@candle.pha.pa.us
обсуждение исходный текст
Список pgsql-hackers
> >
> > >
> > > char *
> > > crypt_getpwdfilename()
> > > {
> > >
> > >   static char *pfnam = NULL;
> > >
> > >   if (!pfnam)
> > >   {
> > >     int bufsize;
> > >     bufsize = strlen(DataDir) + strlen(CRYPT_PWD_FILE) + 2;
> > >     pfnam = (char *) palloc(bufsize);
> > >     spprintf(pfnam, bufsize, "%s/%s", DataDir, CRYPT_PWD_FILE);
> > >   }
> > >
> > >   return pfnam;
> > > }
> > >
> > > Why the check for '!ipfnam'?  Seems useless since we are setting it to
> > > NULL the line before...no?
> >
> > Actually, no.  We are declaring it as static, so the first time the
> > function is called, it is set to NULL.  After that, it is not
> > initialized for each function call because a static local variable's
> > value is kept between function calls.  It is like a global variable in
> > its duration, but in local scope.
> >
> > This is an old trick to run the initialization code only the first time
> > the function is called.
> 
>     But  is  it  good  then  to use palloc() instead of malloc()?
>     Anything palloc()'d is thrown away when the memory context in
>     which  it  is made get's destroyed. So you have to care about
>     the memory context in which the call is made. If  under  some
>     (but  not  all)  circumstances  the FIRST call is made in the
>     wrong mcxt, the pointer maybe get's corrupted later.

Oops, yep, I didn't see that.  palloc is bad to use in this context. 
Malloc should be used, Marc.

--  Bruce Momjian                        |  http://www.op.net/~candle maillist@candle.pha.pa.us            |  (610)
853-3000+  If your life is a hard drive,     |  830 Blythe Avenue +  Christ can be your backup.        |  Drexel Hill,
Pennsylvania19026
 


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: [HACKERS] palloc() vs static define?
Следующее
От: jwieck@debis.com (Jan Wieck)
Дата:
Сообщение: Re: [HACKERS] Does this make sense: