Re: [HACKERS] Does this make sense:

From: Bruce Momjian <maillist(at)candle(dot)pha(dot)pa(dot)us>
To: jwieck(at)debis(dot)com
Cc: scrappy(at)hub(dot)org, pgsql-hackers(at)postgreSQL(dot)org
Subject: Re: [HACKERS] Does this make sense:
Date: 1998-12-14 16:43:38
Message-ID: 199812141643.LAA23706@candle.pha.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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(at)candle(dot)pha(dot)pa(dot)us | (610) 853-3000
+ If your life is a hard drive, | 830 Blythe Avenue
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Clark Evans 1998-12-14 16:46:30 Row Level Locking, On-line Recovery
Previous Message Jan Wieck 1998-12-14 16:20:50 Re: [HACKERS] Does this make sense: