aboutsummaryrefslogtreecommitdiff
path: root/frontend
diff options
context:
space:
mode:
Diffstat (limited to 'frontend')
-rw-r--r--frontend/Exception.cpp18
-rw-r--r--frontend/Exception.h4
2 files changed, 6 insertions, 16 deletions
diff --git a/frontend/Exception.cpp b/frontend/Exception.cpp
index 423f4e9..c852f0a 100644
--- a/frontend/Exception.cpp
+++ b/frontend/Exception.cpp
@@ -1,30 +1,22 @@
#include <cstdarg>
#include <cstdio>
#include <cstdlib>
+#include <cstring>
+
+#include "backend/String.h"
#include "Exception.h"
using namespace std;
const char * Exception::what() {
- return error.get();
-}
-
-void Exception::va_format(va_list args, const char * fmt) {
- va_list args_copy;
- va_copy(args_copy, args);
- size_t sz = vsnprintf(NULL, 0, fmt, args_copy) + 1;
- va_end(args_copy);
-
- this->error = unique_ptr<char>(static_cast<char *>(malloc(sz)));
-
- vsnprintf(this->error.get(), sz, fmt, args);
+ return this->error.get();
}
Exception::Exception(const char * fmt, ...) {
va_list args;
va_start(args, fmt);
- va_format(args, fmt);
+ this->error = unique_ptr<char>(strdup(String::va_fmt(args, fmt).c_str()));
va_end(args);
}
diff --git a/frontend/Exception.h b/frontend/Exception.h
index 633cb4f..3bbced2 100644
--- a/frontend/Exception.h
+++ b/frontend/Exception.h
@@ -1,6 +1,5 @@
#pragma once
-#include <cstdarg>
#include <exception>
#include <memory>
@@ -11,7 +10,6 @@ public:
protected:
Exception() = default;
- void va_format(va_list args, const char * fmt);
- std::unique_ptr<char> error = NULL;
+ std::unique_ptr<char> error;
};