mirror of
https://onedev.site.tesses.net/crosslang
synced 2026-03-26 04:50:20 +00:00
Fix a bug where a crvm dependency is freed if it only has classes
This commit is contained in:
@@ -48,7 +48,7 @@ jobs:
|
||||
image: git.tesseslanguage.com/tesses50/arch-builds:2025-11-11
|
||||
interpreter: !DefaultInterpreter
|
||||
commands: |
|
||||
wget -O /root/repository.key wget https://git.tesseslanguage.com/api/packages/tesses50/arch/repository.key
|
||||
wget -O /root/repository.key https://git.tesseslanguage.com/api/packages/tesses50/arch/repository.key
|
||||
pacman-key --add /root/repository.key
|
||||
pacman-key --config /opt/cross/ppc/pacman.conf --add /root/repository.key
|
||||
printf "[tesses50.git.tesseslanguage.com]\nSigLevel = Optional TrustAll\nServer = https://git.tesseslanguage.com/api/packages/tesses50/arch/core/\$arch\n" >> /etc/pacman.conf
|
||||
|
||||
@@ -1230,6 +1230,10 @@ namespace Tesses::CrossLang
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
static TObject New_Task(GCList& ls, std::vector<TObject> args)
|
||||
{
|
||||
return TTask::Create(ls);
|
||||
}
|
||||
void TStd::RegisterRoot(GC* gc, TRootEnvironment* env)
|
||||
{
|
||||
GCList ls(gc);
|
||||
@@ -1370,6 +1374,7 @@ namespace Tesses::CrossLang
|
||||
});
|
||||
newTypes->DeclareFunction(gc,"DocumentationParser","Parse documentation blocks",{"documentationString"},New_DocumentationParser);
|
||||
newTypes->DeclareFunction(gc,"ByteArray","Create bytearray, with optional either size (to size it) or string argument (to fill byte array)",{"$data"},ByteArray);
|
||||
newTypes->DeclareFunction(gc,"Task","Create a task for async, to manually create an async object",{},New_Task);
|
||||
|
||||
env->DeclareVariable("Version", TDictionary::Create(ls,{
|
||||
TDItem("Parse",TExternalMethod::Create(ls,"Parse version from string",{"versionStr"},[](GCList& ls, std::vector<TObject> args)->TObject{
|
||||
|
||||
@@ -314,6 +314,7 @@ namespace Tesses::CrossLang {
|
||||
if(this->permissions.customConsole != nullptr) this->permissions.customConsole->Mark();
|
||||
for(auto defer : this->defers) defer->Mark();
|
||||
if(this->error != nullptr) this->error->Mark();
|
||||
for(auto cls : this->classes) cls.first->Mark();
|
||||
}
|
||||
TRootEnvironment* TRootEnvironment::Create(GCList* gc,TDictionary* dict)
|
||||
{
|
||||
|
||||
@@ -3996,6 +3996,28 @@ namespace Tesses::CrossLang {
|
||||
|
||||
if(ttask != nullptr)
|
||||
{
|
||||
if(key == "SetSucceeded")
|
||||
{
|
||||
if(args.size() > 0)
|
||||
{
|
||||
ttask->SetSucceeded(args[0]);
|
||||
}
|
||||
cse.back()->Push(gc, Undefined());
|
||||
return false;
|
||||
}
|
||||
if(key == "SetFailed")
|
||||
{
|
||||
if(args.size() > 0)
|
||||
{
|
||||
try {
|
||||
throw VMByteCodeException(gc,args[0]);
|
||||
} catch(...) {
|
||||
ttask->SetFailed(std::current_exception());
|
||||
}
|
||||
}
|
||||
cse.back()->Push(gc, Undefined());
|
||||
return false;
|
||||
}
|
||||
if(key == "ContinueWith")
|
||||
{
|
||||
TCallable* callable2;
|
||||
|
||||
Reference in New Issue
Block a user