Show
Ignore:
Timestamp:
04.10.2010 15:13:52 (9 years ago)
Author:
ak19
Message:

Still part of bugfix in depositor: depositor now crashed further down the depositing process, because a similar error (error in code logic) existed elsewhere in the code

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone2/runtime-src/src/recpt/depositoraction.cpp

    r23012 r23029  
    828828 
    829829      int prefix_len = macro_prefix.size(); 
    830        
    831       text_t args_prefix = substr(args_name.begin(),args_name.begin()+prefix_len+3); 
    832        
    833       if (args_prefix == (macro_prefix+"md.")) {      
    834         text_t args_val = args[args_name]; 
    835  
    836     text_t args_suffix = substr(args_name.begin()+prefix_len+3,args_name.end());  
    837  
    838     text_tarray mdvalues; 
    839     splitchar (args_val.begin(), args_val.end(), ',', mdvalues); 
    840     int numvalues = mdvalues.size(); 
    841  
    842     for (int i = 0; i < numvalues; ++i) { 
    843       if (!mdvalues[i].empty()) { 
    844  
    845         decode_cgi_arg(mdvalues[i]); 
    846  
    847         metadata_file += "            <Metadata mode=\"accumulate\" name=\"";        
    848         metadata_file += args_suffix; 
    849         metadata_file += "\">"; 
    850         metadata_file += mdvalues[i]; 
    851         metadata_file += "</Metadata>\n"; 
    852  
     830      int args_name_len = args_name.size(); 
     831 
     832      if(args_name_len >= prefix_len+3) { // Only now can we substring args_name by prefix_len+3 
     833          text_t args_prefix; 
     834          if(args_name_len == prefix_len+3) { 
     835              args_prefix = args_name; 
     836          } else { // >, so substring 
     837              args_prefix = substr(args_name.begin(),args_name.begin()+prefix_len+3); 
     838          } 
     839 
     840          if (args_prefix == (macro_prefix+"md.")) {      
     841            text_t args_val = args[args_name]; 
     842 
     843            text_t args_suffix = substr(args_name.begin()+prefix_len+3,args_name.end());  
     844 
     845            text_tarray mdvalues; 
     846            splitchar (args_val.begin(), args_val.end(), ',', mdvalues); 
     847            int numvalues = mdvalues.size(); 
     848 
     849            for (int i = 0; i < numvalues; ++i) { 
     850              if (!mdvalues[i].empty()) { 
     851 
     852                decode_cgi_arg(mdvalues[i]); 
     853 
     854                metadata_file += "            <Metadata mode=\"accumulate\" name=\"";        
     855                metadata_file += args_suffix; 
     856                metadata_file += "\">"; 
     857                metadata_file += mdvalues[i]; 
     858                metadata_file += "</Metadata>\n"; 
     859 
     860              } 
     861            } 
     862          } 
    853863      } 
    854     } 
    855       }        
    856  
    857864      ++args_here; 
    858865    }