StackFrame::~StackFrame() {
if (module != NULL) {
- delete module;
+ delete [] module;
}
if (function != NULL) {
- delete function;
+ delete [] function;
}
if (filename != NULL) {
- delete filename;
- }
- if (linenumber != NULL) {
- delete linenumber;
- }
- if (offset != NULL) {
- delete offset;
+ delete [] filename;
}
}
-Backtrace::~Backtrace() {
- for (int i = 0; i < frames.size(); i++) {
- delete frames[i];
- }
-}
// bool cast
bool Null ::toBool(void) const { return false; }
void Pointer::visit(Visitor &visitor) { visitor.visit(this); }
void Repr ::visit(Visitor &visitor) { visitor.visit(this); }
-void Backtrace::addFrame(StackFrame* frame) {
- frames.push_back(frame);
-}
void Visitor::visit(Null *) { assert(0); }
void Visitor::visit(Bool *) { assert(0); }
static Null null;
const Value & Value::operator[](size_t index) const {
- const Array *array = dynamic_cast<const Array *>(this);
+ const Array *array = toArray();
if (array) {
if (index < array->values.size()) {
return *array->values[index];