blueloveTH %!s(int64=2) %!d(string=hai) anos
pai
achega
120d1dfb27

+ 1 - 15
include/pocketpy/common.h

@@ -18,7 +18,7 @@
 #include <random>
 #include <deque>
 
-#define PK_VERSION				"1.4.0"
+#define PK_VERSION				"1.4.1"
 
 #include "config.h"
 #include "export.h"
@@ -115,13 +115,6 @@ union BitsCvtImpl<4>{
 
 	BitsCvtImpl(NumberTraits<4>::float_t val): _float(val) {}
 	BitsCvtImpl(NumberTraits<4>::int_t val): _int(val) {}
-
-	// void print(){
-	// 	std::string s = std::bitset<32>(_int).to_string();
-	// 	std::cout << s.substr(0, 1) << '|';
-	// 	std::cout << s.substr(1, 8) << '|';
-	// 	std::cout << s.substr(9) << std::endl;
-	// }
 };
 
 template<>
@@ -146,13 +139,6 @@ union BitsCvtImpl<8>{
 
 	BitsCvtImpl(NumberTraits<8>::float_t val): _float(val) {}
 	BitsCvtImpl(NumberTraits<8>::int_t val): _int(val) {}
-
-	// void print(){
-	// 	std::string s = std::bitset<64>(_int).to_string();
-	// 	std::cout << s.substr(0, 1) << '|';
-	// 	std::cout << s.substr(1, 11) << '|';
-	// 	std::cout << s.substr(12) << std::endl;
-	// }
 };
 
 using BitsCvt = BitsCvtImpl<sizeof(void*)>;

+ 1 - 1
include/pocketpy/error.h

@@ -29,7 +29,7 @@ struct SourceData {
     Str filename;
     CompileMode mode;
 
-    std::string source;  // assume '\0' terminated
+    Str source;
     std::vector<const char*> line_starts;
     
     SourceData(const Str& source, const Str& filename, CompileMode mode);

+ 1 - 1
include/pocketpy/pocketpy_c.h

@@ -87,7 +87,7 @@ PK_EXPORT bool pkpy_vectorcall(pkpy_vm*, int argc);
 
 /* Special APIs */
 PK_EXPORT void pkpy_free(void* p);
-PK_EXPORT pkpy_CString pkpy_string(const char* s);
+#define pkpy_string(__s) (__s)
 PK_EXPORT pkpy_CName pkpy_name(const char* s);
 PK_EXPORT pkpy_CString pkpy_name_to_string(pkpy_CName name);
 PK_EXPORT void pkpy_set_output_handler(pkpy_vm*, pkpy_COutputHandler handler);

+ 1 - 1
include/pocketpy/vm.h

@@ -582,7 +582,7 @@ inline const char* _py_cast<const char*>(VM* vm, PyObject* obj){
 }
 
 inline PyObject* py_var(VM* vm, std::string val){
-    return VAR(Str(std::move(val)));
+    return VAR(Str(val));
 }
 
 inline PyObject* py_var(VM* vm, std::string_view val){

+ 1 - 2
src/error.cpp

@@ -12,8 +12,7 @@ namespace pkpy{
             if(source[index] != '\r') ss << source[index];
             index++;
         }
-        this->source = ss.str().str();
-        
+        this->source = ss.str();
         line_starts.push_back(this->source.c_str());
     }
 

+ 0 - 4
src/pocketpy_c.cpp

@@ -546,10 +546,6 @@ void pkpy_free(void* p){
     free(p);
 }
 
-pkpy_CString pkpy_string(const char* value){
-    return value;
-}
-
 pkpy_CName pkpy_name(const char* name){
     return StrName(name).index;
 }

+ 4 - 1
src/str.cpp

@@ -60,6 +60,7 @@ int utf8len(unsigned char c, bool suppress){
         for(int i=0; i<size; i++){
             if(!isascii(data[i])){ is_ascii = false; break; }
         }
+        data[size] = '\0';
     }
 
     Str::Str(const Str& other): size(other.size), is_ascii(other.is_ascii) {
@@ -101,6 +102,7 @@ int utf8len(unsigned char c, bool suppress){
         is_ascii = other.is_ascii;
         PK_STR_ALLOCATE()
         memcpy(data, other.data, size);
+        data[size] = '\0';
         return *this;
     }
 
@@ -108,6 +110,7 @@ int utf8len(unsigned char c, bool suppress){
         Str ret(size + other.size, is_ascii && other.is_ascii);
         memcpy(ret.data, data, size);
         memcpy(ret.data + size, other.data, other.size);
+        ret.data[ret.size] = '\0';
         return ret;
     }
 
@@ -171,6 +174,7 @@ int utf8len(unsigned char c, bool suppress){
     Str Str::substr(int start, int len) const {
         Str ret(len, is_ascii);
         memcpy(ret.data, data + start, len);
+        ret.data[len] = '\0';
         return ret;
     }
 
@@ -432,7 +436,6 @@ int utf8len(unsigned char c, bool suppress){
     }
 
     Str SStream::str(){
-        buffer.push_back('\0');
         // after this call, the buffer is no longer valid
         return Str(buffer.detach());
     }

+ 0 - 5
src2/pocketpy_c.c

@@ -223,11 +223,6 @@ void pkpy_free(void* p) {
 
 }
 
-pkpy_CString pkpy_string(const char* s) {
-    pkpy_CString returnValue;
-    return returnValue;
-}
-
 pkpy_CName pkpy_name(const char* s) {
     pkpy_CName returnValue;
     return returnValue;