From bf3ae1fa02f198556e8d31e506efe6fc12111344 Mon Sep 17 00:00:00 2001 From: Mike Nolan Date: Wed, 16 Apr 2025 07:39:30 -0500 Subject: [PATCH] Fix win32 somewhat? --- include/CrossLang.hpp | 5 ++++ src/archive.cpp | 4 +++ src/runtime_methods/console.cpp | 2 +- src/runtime_methods/process.cpp | 4 +-- src/types/streamheapobject.cpp | 4 +++ src/vm/vm.cpp | 52 +++++++++++++++++++++++++++++++-- 6 files changed, 65 insertions(+), 6 deletions(-) diff --git a/include/CrossLang.hpp b/include/CrossLang.hpp index 6e330a9..bf78afc 100644 --- a/include/CrossLang.hpp +++ b/include/CrossLang.hpp @@ -16,12 +16,17 @@ #include #include #include +#include #define TVM_MAJOR 1 #define TVM_MINOR 0 #define TVM_PATCH 0 #define TVM_BUILD 0 #define TVM_VERSIONSTAGE DevVersion +#if defined(_WIN32) +#undef Yield +#endif + namespace Tesses::CrossLang { std::string EscapeString(std::string text,bool quote); diff --git a/src/archive.cpp b/src/archive.cpp index ac16128..48433d2 100644 --- a/src/archive.cpp +++ b/src/archive.cpp @@ -245,7 +245,11 @@ namespace Tesses::CrossLang size_t offset = 0; uint8_t buff[1024]; do { + #if defined(_WIN32) + read = min(min(tableLen-offset,tableLen), sizeof(buff)); + #else read = std::min(std::min(tableLen-offset,tableLen), sizeof(buff)); + #endif read = strm->Read(buff,read); if(read > 0) strm2->WriteBlock(buff,read); diff --git a/src/runtime_methods/console.cpp b/src/runtime_methods/console.cpp index 5e42cd4..0ca69a8 100644 --- a/src/runtime_methods/console.cpp +++ b/src/runtime_methods/console.cpp @@ -2,7 +2,7 @@ #include "CrossLang.hpp" #include -#if defined(GEKKO) || defined(__SWITCH__) +#if defined(GEKKO) || defined(__SWITCH__) || defined(_WIN32) #undef CROSSLANG_ENABLE_TERMIOS #endif diff --git a/src/runtime_methods/process.cpp b/src/runtime_methods/process.cpp index 7969c72..830a8be 100644 --- a/src/runtime_methods/process.cpp +++ b/src/runtime_methods/process.cpp @@ -97,7 +97,7 @@ namespace Tesses::CrossLang int r = subprocess_create_ex(args3,(int)options,env3,subprocess); if(r != 0) { - printf("Here2 %i\n",r); + delete[] args3; delete[] env3; delete subprocess; @@ -172,4 +172,4 @@ namespace Tesses::CrossLang env->SetVariable("Process",dict); gc->BarrierEnd(); } -} \ No newline at end of file +} diff --git a/src/types/streamheapobject.cpp b/src/types/streamheapobject.cpp index 89968a6..5406d2e 100644 --- a/src/types/streamheapobject.cpp +++ b/src/types/streamheapobject.cpp @@ -94,7 +94,11 @@ namespace Tesses::CrossLang arr->data.resize(sz); auto res = dict->CallMethod(ls2, "Read",{arr, (int64_t)0L, (int64_t)sz}); + #if defined(_WIN32) + memcpy(buff,arr->data.data(),min(sz,arr->data.size())); + #else memcpy(buff,arr->data.data(),std::min(sz,arr->data.size())); + #endif int64_t r; if(GetObject(res,r)) return r; } diff --git a/src/vm/vm.cpp b/src/vm/vm.cpp index 9207467..c8c8dcc 100644 --- a/src/vm/vm.cpp +++ b/src/vm/vm.cpp @@ -2969,7 +2969,12 @@ namespace Tesses::CrossLang { uint16_t port=0; if(off < len) + #if defined(_WIN32) + len = netStrm->ReadFrom(data->data.data()+off,min(len,min(data->data.size() - off, data->data.size())),ip,port); + + #else len = netStrm->ReadFrom(data->data.data()+off,std::min(len,std::min(data->data.size() - off, data->data.size())),ip,port); + #endif else len = 0; @@ -3000,7 +3005,12 @@ namespace Tesses::CrossLang { size_t len = (size_t)length; if(off < len) + #if defined(_WIN32) + len = netStrm->WriteTo(data->data.data()+off,min(len, min(data->data.size() - off, data->data.size())), ip, (int64_t)port); + + #else len = netStrm->WriteTo(data->data.data()+off,std::min(len, std::min(data->data.size() - off, data->data.size())), ip, (int64_t)port); + #endif else len = 0; @@ -3023,7 +3033,12 @@ namespace Tesses::CrossLang { size_t len = (size_t)length; if(off < len) + #if defined(_WIN32) + len = strm->stream->Read(data->data.data()+off,min(len,min(data->data.size() - off, data->data.size()))); + + #else len = strm->stream->Read(data->data.data()+off,std::min(len,std::min(data->data.size() - off, data->data.size()))); + #endif else len = 0; @@ -3044,7 +3059,12 @@ namespace Tesses::CrossLang { size_t len = (size_t)length; if(off < len) + #if defined(_WIN32) + + len = strm->stream->Write(data->data.data()+off,min(len, min(data->data.size() - off, data->data.size()))); + #else len = strm->stream->Write(data->data.data()+off,std::min(len, std::min(data->data.size() - off, data->data.size()))); + #endif else len = 0; @@ -3065,7 +3085,12 @@ namespace Tesses::CrossLang { size_t len = (size_t)length; if(off < len) + #if defined(_WIN32) + len = strm->stream->ReadBlock(data->data.data()+off,min(len, min(data->data.size() - off, data->data.size()))); + + #else len = strm->stream->ReadBlock(data->data.data()+off,std::min(len, std::min(data->data.size() - off, data->data.size()))); + #endif else len = 0; @@ -3098,7 +3123,11 @@ namespace Tesses::CrossLang { size_t len = (size_t)length; if(off < len) + #if defined(_WIN32) + strm->stream->WriteBlock(data->data.data()+off,min(len,min(data->data.size() - off, data->data.size()))); + #else strm->stream->WriteBlock(data->data.data()+off,std::min(len,std::min(data->data.size() - off, data->data.size()))); + #endif } cse.back()->Push(gc, nullptr); @@ -3263,7 +3292,11 @@ namespace Tesses::CrossLang { { offdest = bArray2->data.size(); } + #if defined(_WIN32) + len = min(min(bArray->data.size()-offsrc,bArray2->data.size()-offdest),len); + #else len = std::min(std::min(bArray->data.size()-offsrc,bArray2->data.size()-offdest),len); + #endif if(len > 0) memcpy(bArray2->data.data()+offdest,bArray->data.data()+offsrc,len); cse.back()->Push(gc,bArray2); @@ -3309,8 +3342,11 @@ namespace Tesses::CrossLang { { offdest = bArray->data.size(); } + #if defined(_WIN32) + len = min(len,bArray2->data.size()-offsrc); + #else len = std::min(len,bArray2->data.size()-offsrc); - + #endif bArray->data.insert(bArray->data.begin()+offdest,bArray2->data.begin()+offsrc,bArray2->data.begin()+offsrc+len); cse.back()->Push(gc, bArray); @@ -3344,9 +3380,11 @@ namespace Tesses::CrossLang { { off = bArray->data.size(); } - + #if defined(_WIN32) + len = min(bArray->data.size() - off,len); + #else len = std::min(bArray->data.size() - off,len); - + #endif bArray->data.insert(bArray->data.end(),bArray2->data.begin()+off,bArray2->data.begin()+off+len); cse.back()->Push(gc,bArray); return false; @@ -5078,10 +5116,18 @@ namespace Tesses::CrossLang { { if(closure->closure->args[i].find("$$") == 0) { + #if defined(_WIN32) + return min(argLen,i); + #else return std::min(argLen,i); + #endif } } + #if defined(_WIN32) + return min(argLen,closure->closure->args.size()); + #else return std::min(argLen,closure->closure->args.size()); + #endif }; auto trimStart = [](std::string txt)->std::string { if(txt.empty()) return {};