summaryrefslogtreecommitdiffabout
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--htdocs/handlers/exception_dev3
1 files changed, 2 insertions, 1 deletions
diff --git a/htdocs/handlers/exception_dev b/htdocs/handlers/exception_dev
index d62f462..49b7f45 100644
--- a/htdocs/handlers/exception_dev
+++ b/htdocs/handlers/exception_dev
@@ -3,49 +3,49 @@
#include <iostream>
#include <fstream>
#include <sstream>
#include <cassert>
#include <cstdarg>
#include <stdexcept>
#include <cxxabi.h>
#include <sitecing/sitecing_util.h>
#include <sitecing/util.h>
#include <sitecing/magic.h>
#include <konforka/util.h>
#include <konforka/exception.h>
</%impl>
%%var string message;
%%var string root_source;
%%var string root_intermediate;
%%var string root_so;
%%var string component;
%%var int line_number = -1;
%%var const exception* exception_caught;
<%code>
__SCIF->headers.clear();
__SCIF->out->seekp(0);
int magic = _magic;
- va_list va = _args;
+ va_list va; va_copy(va,_args);
switch(magic) {
case sitecing::__magic_compile_error:
message = va_arg(va,const char*);
root_source = va_arg(va,const char*);
root_intermediate = va_arg(va,const char*);
root_so = va_arg(va,const char*);
component = va_arg(va,const char*);
break;
case sitecing::__magic_preprocess_error:
message = va_arg(va,const char*);
root_source = va_arg(va,const char*);
root_intermediate = va_arg(va,const char*);
root_so = va_arg(va,const char*);
component = va_arg(va,const char*);
line_number = va_arg(va,int);
break;
case sitecing::__magic_generic_exception:
message = va_arg(va,const char*);
root_source = va_arg(va,const char*);
root_intermediate = va_arg(va,const char *);
root_so = va_arg(va,const char *);
component = va_arg(va,const char*);
exception_caught = va_arg(va,const exception*);
break;
@@ -305,43 +305,44 @@
char tln[16];
snprintf(tln,sizeof(tln),"%5d",l);
<%output>
<li class="<% l==line?"focused":"unfocused" %>"><span class="lineno"><% sitecing::html_escape(tln,sitecing::html_escape_nbsp) %></span>&nbsp;<span class="line"><% sitecing::html_escape(str,sitecing::html_escape_nbsp) %></span></li>
</%output>
}
<%output></ul></%output>
}
}
}
</%code>
<div class="what">
<% sitecing::html_escape(message,sitecing::html_escape_br) %>
</div>
</div>
</%method>
<%codemethod string strip_roots(const string& filename) %>
string np = konforka::normalize_path(filename);
try{
return sitecing::strip_prefix(np,root_source);
}catch(sitecing::utility_no_prefix& e){ }
try{
return sitecing::strip_prefix(np,root_intermediate);
}catch(sitecing::utility_no_prefix& e){ }
+ return np;
</%codemethod>
<%codemethod string remove_roots(const string& str) %>
string rv = str;
string::size_type rp;
string::size_type rl = root_source.length();
while((rp=rv.find(root_source))!=string::npos) {
rv.erase(rp,rl);
}
rl = root_intermediate.length();
while((rp=rv.find(root_intermediate))!=string::npos) {
rv.erase(rp,rl);
}
rl = root_so.length();
while((rp=rv.find(root_so))!=string::npos) {
rv.erase(rp,rl);
}
return rv;
</%codemethod>
% /* vim:set ft=sitecing: */