Ignore:
Timestamp:
2010-10-04T15:13:52+13:00 (14 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

File:
1 edited

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    }
Note: See TracChangeset for help on using the changeset viewer.