File tree Expand file tree Collapse file tree 3 files changed +37
-2
lines changed
system/include/emscripten Expand file tree Collapse file tree 3 files changed +37
-2
lines changed Original file line number Diff line number Diff line change @@ -300,7 +300,7 @@ sigs = {
300
300
_embind_register_constant__sig : 'vppd' ,
301
301
_embind_register_emval__sig : 'vpp' ,
302
302
_embind_register_enum__sig : 'vpppi' ,
303
- _embind_register_enum_value__sig : 'vppp ' ,
303
+ _embind_register_enum_value__sig : 'vppi ' ,
304
304
_embind_register_float__sig : 'vppp' ,
305
305
_embind_register_function__sig : 'vpippppi' ,
306
306
_embind_register_integer__sig : 'vpppii' ,
Original file line number Diff line number Diff line change @@ -37,7 +37,7 @@ enum class sharing_policy {
37
37
38
38
namespace internal {
39
39
40
- typedef long GenericEnumValue;
40
+ typedef int GenericEnumValue;
41
41
42
42
typedef void * GenericFunction;
43
43
typedef void (*VoidFunctionPtr)(void );
Original file line number Diff line number Diff line change @@ -14298,3 +14298,38 @@ def test_errar(self):
14298
14298
def test_no_input_files(self):
14299
14299
err = self.expect_fail([EMCC, '-c'])
14300
14300
self.assertContained('clang: error: no input files', err)
14301
+
14302
+ def test_embind_negative_enum_values(self):
14303
+ # Test if negative enum values are printed correctly and not overflown to
14304
+ # large values when CAN_ADDRESS_2GB is true.
14305
+ src = r'''
14306
+ #include <stdio.h>
14307
+ #include <emscripten.h>
14308
+ #include <emscripten/bind.h>
14309
+
14310
+ using namespace emscripten;
14311
+
14312
+ int main() {
14313
+ EM_ASM(
14314
+ console.log(Module.value.neg.value);
14315
+ console.log(Module.value.zero.value);
14316
+ console.log(Module.value.pos.value);
14317
+ );
14318
+ }
14319
+
14320
+ enum class value {
14321
+ neg = -1,
14322
+ zero = 0,
14323
+ pos = 1,
14324
+ };
14325
+
14326
+ EMSCRIPTEN_BINDINGS(utility) {
14327
+ enum_<value>("value")
14328
+ .value("neg", value::neg)
14329
+ .value("zero", value::zero)
14330
+ .value("pos", value::pos);
14331
+ }
14332
+ '''
14333
+ expected = '-1\n0\n1\n'
14334
+ self.do_run(src, expected_output=expected,
14335
+ emcc_args=['-lembind', '-sALLOW_MEMORY_GROWTH', '-sMAXIMUM_MEMORY=4GB'])
You can’t perform that action at this time.
0 commit comments