Skip to content

Commit 6a68bdd

Browse files
committed
Solve minor bugs from C# loader.
1 parent 7c55580 commit 6a68bdd

File tree

6 files changed

+37
-22
lines changed

6 files changed

+37
-22
lines changed

source/loaders/cs_loader/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ add_library(${target} MODULE
130130
# Add target dependencies
131131
add_dependencies(${target}
132132
${LOADER_MODULE_NAMES}
133+
cs_loader_impl
133134
)
134135

135136
# Create namespaced alias

source/loaders/cs_loader/include/cs_loader/simple_netcore.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,11 @@ netcore_handle simple_netcore_create(char * dotnet_root, char * dotnet_loader_as
3838

3939
reflect_function * simple_netcore_get_functions(netcore_handle, int *);
4040

41-
void simple_netcore_load_script_from_files(netcore_handle handle, char * files[MAX_FILES], size_t size);
41+
int simple_netcore_load_script_from_files(netcore_handle handle, char * files[MAX_FILES], size_t size);
4242

43-
void simple_netcore_load_script_from_assembly(netcore_handle handle, char * file);
43+
int simple_netcore_load_script_from_assembly(netcore_handle handle, char * file);
4444

45-
void simple_netcore_load_script_from_memory(netcore_handle handle, const char * buffer, size_t size);
45+
int simple_netcore_load_script_from_memory(netcore_handle handle, const char * buffer, size_t size);
4646

4747
execution_result * simple_netcore_invoke(netcore_handle, const char *);
4848

source/loaders/cs_loader/netcore/source/Providers/LoaderBase.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ public bool LoadFromAssembly(string assemblyFile)
144144
catch (Exception exName)
145145
{
146146
this.log.Error(exName.Message, exName);
147+
return false;
147148
}
148149
}
149150

source/loaders/cs_loader/source/cs_loader_impl.c

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -274,27 +274,35 @@ loader_handle cs_loader_impl_load_from_file(loader_impl impl, const loader_namin
274274
files[i] = (char*)paths[i];
275275
}
276276

277-
simple_netcore_load_script_from_files(nhandle, files, size);
277+
if (simple_netcore_load_script_from_files(nhandle, files, size) != 0)
278+
{
279+
return NULL;
280+
}
278281

279282
return (loader_handle)impl;
280283
}
281284

282285
loader_handle cs_loader_impl_load_from_package(loader_impl impl, const loader_naming_path path) {
283286
netcore_handle nhandle = (netcore_handle)loader_impl_get(impl);
284287

285-
simple_netcore_load_script_from_assembly(nhandle, (char *)path);
288+
if (simple_netcore_load_script_from_assembly(nhandle, (char *)path) != 0)
289+
{
290+
return NULL;
291+
}
286292

287293
return (loader_handle)impl;
288294
}
289295

290296
loader_handle cs_loader_impl_load_from_memory(loader_impl impl, const loader_naming_name name, const char * buffer, size_t size)
291297
{
292-
293298
(void)name;
294299

295300
netcore_handle nhandle = (netcore_handle)loader_impl_get(impl);
296301

297-
simple_netcore_load_script_from_memory(nhandle, buffer, size);
302+
if (simple_netcore_load_script_from_memory(nhandle, buffer, size) != 0)
303+
{
304+
return NULL;
305+
}
298306

299307
return (loader_handle)impl;
300308
}

source/loaders/cs_loader/source/simple_netcore.cpp

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -60,37 +60,29 @@ void simple_netcore_destroy(netcore_handle handle)
6060
delete core;
6161
}
6262

63-
void simple_netcore_load_script_from_files(netcore_handle handle, char * files[MAX_FILES], size_t size)
63+
int simple_netcore_load_script_from_files(netcore_handle handle, char * files[MAX_FILES], size_t size)
6464
{
6565
netcore * core = (netcore*)handle;
6666

67-
if (core->load_files(files, size))
68-
{
69-
70-
}
67+
return core->load_files(files, size) == true ? 0 : 1;
7168
}
7269

73-
void simple_netcore_load_script_from_assembly(netcore_handle handle, char * file)
70+
int simple_netcore_load_script_from_assembly(netcore_handle handle, char * file)
7471
{
7572
netcore * core = (netcore*)handle;
7673

77-
if (core->load_assembly(file))
78-
{
79-
80-
}
74+
return core->load_assembly(file) == true ? 0 : 1;
8175
}
8276

83-
void simple_netcore_load_script_from_memory(netcore_handle handle, const char * buffer, size_t size)
77+
int simple_netcore_load_script_from_memory(netcore_handle handle, const char * buffer, size_t size)
8478
{
8579
netcore * core = (netcore*)handle;
8680

8781
(void)size;
8882

89-
if (core->load_source((char*)buffer))
90-
{
91-
92-
}
83+
return core->load_source((char*)buffer) == true ? 0 : 1;
9384
}
85+
9486
execution_result * simple_netcore_invoke(netcore_handle handle, const char * func)
9587
{
9688
netcore * core = (netcore*)handle;

source/tests/cs_loader_test/source/cs_loader_test.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,3 +85,16 @@ TEST_F(cs_loader_test, Concat)
8585

8686
metacall_value_destroy(ret);
8787
}
88+
89+
TEST_F(cs_loader_test, Fail)
90+
{
91+
/* This is a Python script on purpose, in order to test C# when it fails */
92+
static const char buffer[] =
93+
"#!/usr/bin/env python3\n"
94+
"def multmem(left: int, right: int) -> int:\n"
95+
"\tresult = left * right;\n"
96+
"\tprint(left, ' * ', right, ' = ', result);\n"
97+
"\treturn result;";
98+
99+
EXPECT_EQ((int) 1, (int) metacall_load_from_memory("cs", buffer, sizeof(buffer), NULL));
100+
}

0 commit comments

Comments
 (0)