gozer       2003/11/13 13:03:47

  Modified:    .        Changes
               src/modules/perl modperl_cmd.c
               t/conf   extra.last.conf.in
               t/response/TestDirective perldo.pm
  Log:
  <Perl> sections now proprely set filename and line number information,
  making error messages report the correct location.
  Reviewed by: stas
  
  Revision  Changes    Path
  1.250     +3 -0      modperl-2.0/Changes
  
  Index: Changes
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/Changes,v
  retrieving revision 1.249
  retrieving revision 1.250
  diff -u -r1.249 -r1.250
  --- Changes   10 Nov 2003 21:11:53 -0000      1.249
  +++ Changes   13 Nov 2003 21:03:46 -0000      1.250
  @@ -12,6 +12,9 @@
   
   =item 1.99_12-dev
   
  +<Perl> sections now proprely set filename and line number information,
  +making error messages report the correct location. [Philippe M. Chiasson]
  +
   =item 1.99_11 - November 10, 2003
   
   add a build/win32_fetch_apxs script (called within the top-level
  
  
  
  1.50      +10 -2     modperl-2.0/src/modules/perl/modperl_cmd.c
  
  Index: modperl_cmd.c
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_cmd.c,v
  retrieving revision 1.49
  retrieving revision 1.50
  diff -u -r1.49 -r1.50
  --- modperl_cmd.c     20 Oct 2003 17:44:48 -0000      1.49
  +++ modperl_cmd.c     13 Nov 2003 21:03:46 -0000      1.50
  @@ -310,6 +310,7 @@
       char line[MAX_STRING_LEN];
       apr_table_t *args;
       ap_directive_t **current = mconfig;
  +    int line_num;
   
       if (!endp) {
           return modperl_cmd_unclosed_directive(parms);
  @@ -321,6 +322,7 @@
           return errmsg;
       }
   
  +    line_num = parms->config_file->line_number+1;
       while (!ap_cfg_getline(line, sizeof(line), parms->config_file)) {
           /*XXX: Not sure how robust this is */
           if (strEQ(line, "</Perl>")) {
  @@ -337,7 +339,7 @@
       }
       
       (*current)->filename = parms->config_file->name;
  -    (*current)->line_num = parms->config_file->line_number;
  +    (*current)->line_num = line_num;
       (*current)->directive = apr_pstrdup(p, "Perl");
       (*current)->args = code;
       (*current)->data = args;
  @@ -360,6 +362,7 @@
       const char *handler_name = NULL;
       modperl_handler_t *handler = NULL;
       const char *package_name = NULL;
  +    const char *line_header = NULL;
       int status = OK;
       AV *args = Nullav;
   #ifdef USE_ITHREADS
  @@ -397,8 +400,13 @@
               apr_table_set(options, "package", package_name);
           }
   
  +        line_header = apr_psprintf(p, "\n#line %d %s\n", 
  +                                   parms->directive->line_num,
  +                                   parms->directive->filename);
  +
           /* put the code about to be executed in the configured package */
  -        arg = apr_pstrcat(p, "package ", package_name, ";", arg, NULL);
  +        arg = apr_pstrcat(p, "package ", package_name, ";", line_header,
  +                          arg, NULL);
       }
   
       eval_pv(arg, FALSE);
  
  
  
  1.8       +6 -0      modperl-2.0/t/conf/extra.last.conf.in
  
  Index: extra.last.conf.in
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/t/conf/extra.last.conf.in,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- extra.last.conf.in        17 Mar 2003 06:46:55 -0000      1.7
  +++ extra.last.conf.in        13 Nov 2003 21:03:46 -0000      1.8
  @@ -21,6 +21,12 @@
   $TestDirective::perl::comments="yes";
   </Perl>
   
  +<Perl >
  +$Apache::Server::SaveConfig = 1;
  +$TestDirective::perl::filename = __FILE__;
  +$TestDirective::perl::line =  __LINE__;
  +</Perl>
  +
   ### --------------------------------- ###
   Perl $TestDirective::perl::worked="yes";
   
  
  
  
  1.4       +6 -1      modperl-2.0/t/response/TestDirective/perldo.pm
  
  Index: perldo.pm
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/t/response/TestDirective/perldo.pm,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- perldo.pm 17 Mar 2003 06:46:56 -0000      1.3
  +++ perldo.pm 13 Nov 2003 21:03:47 -0000      1.4
  @@ -10,7 +10,7 @@
   sub handler {
       my $r = shift;
   
  -    plan $r, tests => 5;
  +    plan $r, tests => 7;
   
       ok t_cmp('yes', $TestDirective::perl::worked);
       
  @@ -21,6 +21,11 @@
       ok t_cmp('PerlSection', 
$Apache::ReadConfig::Location{'/perl_sections_saved'}{'AuthName'});
   
       ok t_cmp('yes', $TestDirective::perl::comments);
  +
  +    ok t_cmp(qr/extra.last.conf/, $TestDirective::perl::filename, '__FILE__');
  +
  +    # 3 would mean we are still counting lines from the context of the eval
  +    ok $TestDirective::perl::line > 3;
   
       Apache::OK;
   }
  
  
  

Reply via email to