> -----Original Message-----
> From: Doug MacEachern [mailto:[EMAIL PROTECTED]]
> Sent: Tuesday, September 26, 2000 2:35 PM
> To: Geoffrey Young
> Cc: 'Eric Cholet'; Matt Sergeant; [EMAIL PROTECTED]
> Subject: RE: PerlAddVar bug
> 
> 
> On Thu, 6 Jul 2000, Geoffrey Young wrote:
>  
> > I guess my expectation is that $r->dir_config('MyVar') and
> > $r->dir_config->get('MyVar') should inherit equally, which 
> as far as I can
> > tell, they don't.  PerlSetVar or PerlAddVar - it makes no 
> difference.
> 
> the problem is related to the Apache::Server->dir_config 
> support.  in the
> directive handler, if path was NULL, the var was set/add-ed 
> only to the
> server_rec->module_config.  $r->dir_config falls back to the
> server_rec->module_config  if the var is not found in
> request_rec->per_dir_config, but $r->dir_config->get does 
> not.  the patch
> below fixes the problem, works just as PerlSetEnv does.  the 
> key/val is
> always added to the per-dir table, and also added to the 
> per-server table
> is path == NULL, for use at startup time.

groovy - the patch seems to work just fine (you've been busy, it seems :)

> 
> p.s.
> i also just committed a change so PerlAddVar is now an ITERATE2 rather
> than TAKE 2, so you can say:
> 
> PerlAddVar Key val-one val-two val-three

that works ok too.

Any particular reason for keeping PerlSetVar TAKE2?

anyway, thanks again for the efforts

--Geoff

> 
> Index: src/modules/perl/perl_config.c
> ===================================================================
> RCS file: /home/cvs/modperl/src/modules/perl/perl_config.c,v
> retrieving revision 1.102
> diff -u -r1.102 perl_config.c
> --- src/modules/perl/perl_config.c    2000/09/22 18:52:00     1.102
> +++ src/modules/perl/perl_config.c    2000/09/26 18:29:51
> @@ -717,17 +717,17 @@
>  
>  CHAR_P perl_cmd_var(cmd_parms *cmd, void *config, char *key, 
> char *val)
>  {
> +    perl_dir_config *rec = (perl_dir_config *)config;
>      MP_TRACE_d(fprintf(stderr, "perl_cmd_var: '%s' = 
> '%s'\n", key, val));
> -    if (cmd->path) {
> -        perl_dir_config *rec = (perl_dir_config *) config;
> -        if (cmd->info) {
> -            table_add(rec->vars, key, val);
> -        }
> -        else {
> -            table_set(rec->vars, key, val);
> -        }
> +
> +    if (cmd->info) {
> +        table_add(rec->vars, key, val);
>      }
>      else {
> +        table_set(rec->vars, key, val);
> +    }
> +
> +    if (cmd->path == NULL) {
>          dPSRV(cmd->server);
>          if (cmd->info) {
>              table_add(cls->vars, key, val);
> 

Reply via email to