Index: main/trunk/greenstone2/runtime-src/src/recpt/depositoraction.cpp
===================================================================
--- main/trunk/greenstone2/runtime-src/src/recpt/depositoraction.cpp (revision 23012)
+++ main/trunk/greenstone2/runtime-src/src/recpt/depositoraction.cpp (revision 23029)
@@ -828,31 +828,38 @@
int prefix_len = macro_prefix.size();
-
- text_t args_prefix = substr(args_name.begin(),args_name.begin()+prefix_len+3);
-
- if (args_prefix == (macro_prefix+"md.")) {
- text_t args_val = args[args_name];
-
- text_t args_suffix = substr(args_name.begin()+prefix_len+3,args_name.end());
-
- text_tarray mdvalues;
- splitchar (args_val.begin(), args_val.end(), ',', mdvalues);
- int numvalues = mdvalues.size();
-
- for (int i = 0; i < numvalues; ++i) {
- if (!mdvalues[i].empty()) {
-
- decode_cgi_arg(mdvalues[i]);
-
- metadata_file += " ";
- metadata_file += mdvalues[i];
- metadata_file += "\n";
-
+ int args_name_len = args_name.size();
+
+ if(args_name_len >= prefix_len+3) { // Only now can we substring args_name by prefix_len+3
+ text_t args_prefix;
+ if(args_name_len == prefix_len+3) {
+ args_prefix = args_name;
+ } else { // >, so substring
+ args_prefix = substr(args_name.begin(),args_name.begin()+prefix_len+3);
+ }
+
+ if (args_prefix == (macro_prefix+"md.")) {
+ text_t args_val = args[args_name];
+
+ text_t args_suffix = substr(args_name.begin()+prefix_len+3,args_name.end());
+
+ text_tarray mdvalues;
+ splitchar (args_val.begin(), args_val.end(), ',', mdvalues);
+ int numvalues = mdvalues.size();
+
+ for (int i = 0; i < numvalues; ++i) {
+ if (!mdvalues[i].empty()) {
+
+ decode_cgi_arg(mdvalues[i]);
+
+ metadata_file += " ";
+ metadata_file += mdvalues[i];
+ metadata_file += "\n";
+
+ }
+ }
+ }
}
- }
- }
-
++args_here;
}