Просмотр исходного кода

Moved from Tinystl's strings to standard unique pointers. It makes an dynamically allocated variable self destruct when the contect gets out of scope.

Eiyeron Fulmincendii лет назад: 10
Родитель
Сommit
1ce796d46c
3 измененных файлов с 15 добавлено и 7 удалено
  1. 2 1
      platform/include/Quirks.h
  2. 6 4
      platform/nspire/Quirks.cpp
  3. 7 2
      platform/sfml/Quirks.cpp

+ 2 - 1
platform/include/Quirks.h

@@ -1,6 +1,7 @@
 #ifndef INCLUDE_QUIRKS_H
 #define INCLUDE_QUIRKS_H
 
+#include <memory>
 #include <TINYSTL/string.h>
 
 namespace WalrusRPG
@@ -12,7 +13,7 @@ namespace WalrusRPG
 
         // Relative path to absolute path resolving.
         // Exists because at this time Ndless doesn't support relative paths.
-        tinystl::string solve_absolute_path(const char *path);
+        std::unique_ptr<char> solve_absolute_path(const char *path);
     }
 }
 

+ 6 - 4
platform/nspire/Quirks.cpp

@@ -1,5 +1,6 @@
 #include <cstddef>
 #include <cstring>
+#include <memory>
 #include <TINYSTL/string.h>
 #include "Quirks.h"
 #include "Interrupts.h"
@@ -40,9 +41,10 @@ void Quirks::deinit()
     delete[] base_path;
 }
 
-string Quirks::solve_absolute_path(const char *path)
+std::unique_ptr<char> Quirks::solve_absolute_path(const char *path)
 {
-    string str;
-    str.append(base_path, path);
-    return str;
+    std::unique_ptr<char> result(new char[strlen(base_path) + strlen(path)]);
+    strcpy(result.get(), base_path);
+    strcpy(&result.get()[strlen(base_path)], path);
+    return result;
 }

+ 7 - 2
platform/sfml/Quirks.cpp

@@ -1,17 +1,22 @@
+#include <cstring>
 #include "Quirks.h"
+#include "utility/misc.h"
 
 using namespace WalrusRPG;
 using tinystl::string;
 
 void Quirks::init(const char *argv_0)
 {
+    UNUSED(argv_0);
 }
 
 void Quirks::deinit()
 {
 }
 
-string Quirks::solve_absolute_path(const char* path)
+std::unique_ptr<char> Quirks::solve_absolute_path(const char *path)
 {
-    return string(path);
+    std::unique_ptr<char> result(new char[strlen(path)]); 
+    strcpy(result.get(), path);
+    return result;
 }