script_core 0.2.3 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +35 -57
- data/.ruby-version +1 -1
- data/Gemfile +2 -2
- data/README.md +7 -1
- data/ext/enterprise_script_service/Rakefile +1 -1
- data/ext/enterprise_script_service/libseccomp/.travis.yml +24 -12
- data/ext/enterprise_script_service/libseccomp/CHANGELOG +32 -0
- data/ext/enterprise_script_service/libseccomp/CONTRIBUTING.md +37 -26
- data/ext/enterprise_script_service/libseccomp/CREDITS +11 -0
- data/ext/enterprise_script_service/libseccomp/README.md +21 -1
- data/ext/enterprise_script_service/libseccomp/configure.ac +13 -8
- data/ext/enterprise_script_service/libseccomp/doc/Makefile.am +6 -0
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_api_get.3 +12 -2
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_arch_add.3 +38 -6
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_attr_set.3 +53 -2
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_export_bpf.3 +20 -2
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_init.3 +9 -2
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_load.3 +32 -2
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_merge.3 +16 -2
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_alloc.3 +113 -0
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_fd.3 +1 -0
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_free.3 +1 -0
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_id_valid.3 +1 -0
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_receive.3 +1 -0
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_respond.3 +1 -0
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_rule_add.3 +64 -3
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_syscall_priority.3 +18 -3
- data/ext/enterprise_script_service/libseccomp/include/seccomp-syscalls.h +19 -0
- data/ext/enterprise_script_service/libseccomp/include/seccomp.h.in +116 -0
- data/ext/enterprise_script_service/libseccomp/src/.gitignore +2 -0
- data/ext/enterprise_script_service/libseccomp/src/Makefile.am +31 -17
- data/ext/enterprise_script_service/libseccomp/src/api.c +254 -58
- data/ext/enterprise_script_service/libseccomp/src/arch-aarch64.h +1 -9
- data/ext/enterprise_script_service/libseccomp/src/arch-arm.c +47 -2
- data/ext/enterprise_script_service/libseccomp/src/arch-arm.h +1 -9
- data/ext/enterprise_script_service/libseccomp/src/arch-gperf-generate +40 -0
- data/ext/enterprise_script_service/libseccomp/src/arch-mips.c +41 -4
- data/ext/enterprise_script_service/libseccomp/src/arch-mips.h +2 -10
- data/ext/enterprise_script_service/libseccomp/src/arch-mips64.c +41 -4
- data/ext/enterprise_script_service/libseccomp/src/arch-mips64.h +3 -11
- data/ext/enterprise_script_service/libseccomp/src/arch-mips64n32.c +41 -4
- data/ext/enterprise_script_service/libseccomp/src/arch-mips64n32.h +2 -10
- data/ext/enterprise_script_service/libseccomp/src/arch-parisc.h +1 -10
- data/ext/enterprise_script_service/libseccomp/src/arch-parisc64.c +3 -3
- data/ext/enterprise_script_service/libseccomp/src/arch-parisc64.h +29 -0
- data/ext/enterprise_script_service/libseccomp/src/arch-ppc.h +1 -9
- data/ext/enterprise_script_service/libseccomp/src/arch-ppc64.c +606 -8
- data/ext/enterprise_script_service/libseccomp/src/arch-ppc64.h +2 -10
- data/ext/enterprise_script_service/libseccomp/src/arch-riscv64.c +31 -0
- data/ext/enterprise_script_service/libseccomp/src/arch-riscv64.h +22 -0
- data/ext/enterprise_script_service/libseccomp/src/arch-s390.c +171 -12
- data/ext/enterprise_script_service/libseccomp/src/arch-s390.h +1 -17
- data/ext/enterprise_script_service/libseccomp/src/arch-s390x.c +166 -10
- data/ext/enterprise_script_service/libseccomp/src/arch-s390x.h +1 -20
- data/ext/enterprise_script_service/libseccomp/src/arch-syscall-dump.c +8 -1
- data/ext/enterprise_script_service/libseccomp/src/arch-syscall-validate +359 -143
- data/ext/enterprise_script_service/libseccomp/src/arch-x32.c +36 -2
- data/ext/enterprise_script_service/libseccomp/src/arch-x32.h +2 -10
- data/ext/enterprise_script_service/libseccomp/src/arch-x86.c +172 -10
- data/ext/enterprise_script_service/libseccomp/src/arch-x86.h +1 -14
- data/ext/enterprise_script_service/libseccomp/src/arch-x86_64.h +1 -9
- data/ext/enterprise_script_service/libseccomp/src/arch.c +11 -3
- data/ext/enterprise_script_service/libseccomp/src/arch.h +7 -0
- data/ext/enterprise_script_service/libseccomp/src/db.c +268 -57
- data/ext/enterprise_script_service/libseccomp/src/db.h +16 -2
- data/ext/enterprise_script_service/libseccomp/src/gen_bpf.c +503 -148
- data/ext/enterprise_script_service/libseccomp/src/gen_bpf.h +2 -1
- data/ext/enterprise_script_service/libseccomp/src/gen_pfc.c +165 -37
- data/ext/enterprise_script_service/libseccomp/src/python/libseccomp.pxd +37 -1
- data/ext/enterprise_script_service/libseccomp/src/python/seccomp.pyx +295 -5
- data/ext/enterprise_script_service/libseccomp/src/syscalls.c +56 -0
- data/ext/enterprise_script_service/libseccomp/src/syscalls.csv +470 -0
- data/ext/enterprise_script_service/libseccomp/src/syscalls.h +62 -0
- data/ext/enterprise_script_service/libseccomp/src/syscalls.perf.template +82 -0
- data/ext/enterprise_script_service/libseccomp/src/system.c +196 -16
- data/ext/enterprise_script_service/libseccomp/src/system.h +68 -13
- data/ext/enterprise_script_service/libseccomp/tests/.gitignore +10 -2
- data/ext/enterprise_script_service/libseccomp/tests/06-sim-actions.tests +1 -1
- data/ext/enterprise_script_service/libseccomp/tests/11-basic-basic_errors.c +5 -5
- data/ext/enterprise_script_service/libseccomp/tests/13-basic-attrs.c +35 -1
- data/ext/enterprise_script_service/libseccomp/tests/13-basic-attrs.py +10 -1
- data/ext/enterprise_script_service/libseccomp/tests/15-basic-resolver.c +4 -3
- data/ext/enterprise_script_service/libseccomp/tests/16-sim-arch_basic.c +12 -0
- data/ext/enterprise_script_service/libseccomp/tests/16-sim-arch_basic.py +1 -0
- data/ext/enterprise_script_service/libseccomp/tests/{18-sim-basic_whitelist.c → 18-sim-basic_allowlist.c} +0 -0
- data/ext/enterprise_script_service/libseccomp/tests/{18-sim-basic_whitelist.py → 18-sim-basic_allowlist.py} +0 -0
- data/ext/enterprise_script_service/libseccomp/tests/18-sim-basic_allowlist.tests +32 -0
- data/ext/enterprise_script_service/libseccomp/tests/23-sim-arch_all_le_basic.c +3 -0
- data/ext/enterprise_script_service/libseccomp/tests/23-sim-arch_all_le_basic.py +1 -0
- data/ext/enterprise_script_service/libseccomp/tests/30-sim-socket_syscalls.c +3 -0
- data/ext/enterprise_script_service/libseccomp/tests/30-sim-socket_syscalls.py +1 -0
- data/ext/enterprise_script_service/libseccomp/tests/30-sim-socket_syscalls.tests +33 -17
- data/ext/enterprise_script_service/libseccomp/tests/{34-sim-basic_blacklist.c → 34-sim-basic_denylist.c} +0 -0
- data/ext/enterprise_script_service/libseccomp/tests/{34-sim-basic_blacklist.py → 34-sim-basic_denylist.py} +0 -0
- data/ext/enterprise_script_service/libseccomp/tests/34-sim-basic_denylist.tests +32 -0
- data/ext/enterprise_script_service/libseccomp/tests/36-sim-ipc_syscalls.c +3 -0
- data/ext/enterprise_script_service/libseccomp/tests/36-sim-ipc_syscalls.py +1 -0
- data/ext/enterprise_script_service/libseccomp/tests/36-sim-ipc_syscalls.tests +25 -25
- data/ext/enterprise_script_service/libseccomp/tests/39-basic-api_level.c +24 -3
- data/ext/enterprise_script_service/libseccomp/tests/39-basic-api_level.py +16 -1
- data/ext/enterprise_script_service/libseccomp/tests/47-live-kill_process.c +3 -3
- data/ext/enterprise_script_service/libseccomp/tests/51-live-user_notification.c +112 -0
- data/ext/enterprise_script_service/libseccomp/tests/51-live-user_notification.py +60 -0
- data/ext/enterprise_script_service/libseccomp/tests/51-live-user_notification.tests +11 -0
- data/ext/enterprise_script_service/libseccomp/tests/52-basic-load.c +48 -0
- data/ext/enterprise_script_service/libseccomp/tests/52-basic-load.py +38 -0
- data/ext/enterprise_script_service/libseccomp/tests/52-basic-load.tests +11 -0
- data/ext/enterprise_script_service/libseccomp/tests/53-sim-binary_tree.c +156 -0
- data/ext/enterprise_script_service/libseccomp/tests/53-sim-binary_tree.py +95 -0
- data/ext/enterprise_script_service/libseccomp/tests/53-sim-binary_tree.tests +65 -0
- data/ext/enterprise_script_service/libseccomp/tests/54-live-binary_tree.c +128 -0
- data/ext/enterprise_script_service/libseccomp/tests/54-live-binary_tree.py +95 -0
- data/ext/enterprise_script_service/libseccomp/tests/54-live-binary_tree.tests +11 -0
- data/ext/enterprise_script_service/libseccomp/tests/55-basic-pfc_binary_tree.c +134 -0
- data/ext/enterprise_script_service/libseccomp/tests/55-basic-pfc_binary_tree.sh +46 -0
- data/ext/enterprise_script_service/libseccomp/tests/55-basic-pfc_binary_tree.tests +11 -0
- data/ext/enterprise_script_service/libseccomp/tests/56-basic-iterate_syscalls.c +90 -0
- data/ext/enterprise_script_service/libseccomp/tests/56-basic-iterate_syscalls.py +65 -0
- data/ext/enterprise_script_service/libseccomp/tests/56-basic-iterate_syscalls.tests +11 -0
- data/ext/enterprise_script_service/libseccomp/tests/57-basic-rawsysrc.c +64 -0
- data/ext/enterprise_script_service/libseccomp/tests/57-basic-rawsysrc.py +46 -0
- data/ext/enterprise_script_service/libseccomp/tests/57-basic-rawsysrc.tests +11 -0
- data/ext/enterprise_script_service/libseccomp/tests/58-live-tsync_notify.c +116 -0
- data/ext/enterprise_script_service/libseccomp/tests/58-live-tsync_notify.py +61 -0
- data/ext/enterprise_script_service/libseccomp/tests/58-live-tsync_notify.tests +11 -0
- data/ext/enterprise_script_service/libseccomp/tests/Makefile.am +34 -10
- data/ext/enterprise_script_service/libseccomp/tests/regression +10 -3
- data/ext/enterprise_script_service/libseccomp/tests/util.c +3 -3
- data/ext/enterprise_script_service/libseccomp/tools/Makefile.am +0 -3
- data/ext/enterprise_script_service/libseccomp/tools/check-syntax +1 -1
- data/ext/enterprise_script_service/libseccomp/tools/scmp_arch_detect.c +3 -0
- data/ext/enterprise_script_service/libseccomp/tools/scmp_bpf_disasm.c +4 -2
- data/ext/enterprise_script_service/libseccomp/tools/scmp_bpf_sim.c +4 -0
- data/ext/enterprise_script_service/libseccomp/tools/util.c +14 -12
- data/ext/enterprise_script_service/libseccomp/tools/util.h +7 -0
- data/ext/enterprise_script_service/mruby/.github/workflows/build.yml +149 -0
- data/ext/enterprise_script_service/mruby/.github/workflows/codeql-analysis.yml +55 -0
- data/ext/enterprise_script_service/mruby/.github/workflows/lint.yml +23 -0
- data/ext/enterprise_script_service/mruby/.github/workflows/oss-fuzz.yml +27 -0
- data/ext/enterprise_script_service/mruby/.github/workflows/spell-checker.yml +17 -0
- data/ext/enterprise_script_service/mruby/.gitignore +3 -0
- data/ext/enterprise_script_service/mruby/.gitlab-ci.yml +3 -3
- data/ext/enterprise_script_service/mruby/.markdownlint.yml +16 -0
- data/ext/enterprise_script_service/mruby/.travis.yml +7 -10
- data/ext/enterprise_script_service/mruby/.yamllint +8 -0
- data/ext/enterprise_script_service/mruby/AUTHORS +4 -0
- data/ext/enterprise_script_service/mruby/CODEOWNERS +1 -0
- data/ext/enterprise_script_service/mruby/CONTRIBUTING.md +6 -13
- data/ext/enterprise_script_service/mruby/Doxyfile +4 -4
- data/ext/enterprise_script_service/mruby/LICENSE +1 -1
- data/ext/enterprise_script_service/mruby/Makefile +1 -1
- data/ext/enterprise_script_service/mruby/README.md +5 -11
- data/ext/enterprise_script_service/mruby/Rakefile +18 -108
- data/ext/enterprise_script_service/mruby/TODO.md +17 -0
- data/ext/enterprise_script_service/mruby/appveyor.yml +29 -26
- data/ext/enterprise_script_service/mruby/benchmark/bm_ao_render.rb +1 -1
- data/ext/enterprise_script_service/mruby/build_config.rb +9 -152
- data/ext/enterprise_script_service/mruby/{examples/targets/build_config_ArduinoDue.rb → build_config/ArduinoDue.rb} +4 -21
- data/ext/enterprise_script_service/mruby/{examples/targets/build_config_IntelEdison.rb → build_config/IntelEdison.rb} +4 -4
- data/ext/enterprise_script_service/mruby/{examples/targets/build_config_IntelGalileo.rb → build_config/IntelGalileo.rb} +3 -20
- data/ext/enterprise_script_service/mruby/{examples/targets/build_config_RX630.rb → build_config/RX630.rb} +4 -21
- data/ext/enterprise_script_service/mruby/build_config/android_arm64-v8a.rb +11 -0
- data/ext/enterprise_script_service/mruby/build_config/android_armeabi.rb +11 -0
- data/ext/enterprise_script_service/mruby/{examples/targets/build_config_android_armeabi_v7a_neon_hard.rb → build_config/android_armeabi_v7a_neon_hard.rb} +0 -15
- data/ext/enterprise_script_service/mruby/build_config/bench.rb +11 -0
- data/ext/enterprise_script_service/mruby/build_config/boxing.rb +21 -0
- data/ext/enterprise_script_service/mruby/{examples/targets/build_config_chipKITMax32.rb → build_config/chipKITMax32.rb} +4 -21
- data/ext/enterprise_script_service/mruby/{appveyor_config.rb → build_config/ci/gcc-clang.rb} +11 -8
- data/ext/enterprise_script_service/mruby/build_config/ci/msvc.rb +20 -0
- data/ext/enterprise_script_service/mruby/build_config/clang-asan.rb +11 -0
- data/ext/enterprise_script_service/mruby/build_config/cross-32bit.rb +14 -0
- data/ext/enterprise_script_service/mruby/build_config/default.rb +80 -0
- data/ext/enterprise_script_service/mruby/build_config/dreamcast_shelf.rb +94 -0
- data/ext/enterprise_script_service/mruby/build_config/gameboyadvance.rb +73 -0
- data/ext/enterprise_script_service/mruby/build_config/host-cxx.rb +12 -0
- data/ext/enterprise_script_service/mruby/build_config/host-debug.rb +20 -0
- data/ext/enterprise_script_service/mruby/build_config/host-gprof.rb +14 -0
- data/ext/enterprise_script_service/mruby/build_config/host-m32.rb +15 -0
- data/ext/enterprise_script_service/mruby/build_config/host-shared.rb +36 -0
- data/ext/enterprise_script_service/mruby/build_config/mrbc.rb +11 -0
- data/ext/enterprise_script_service/mruby/build_config/no-float.rb +17 -0
- data/ext/enterprise_script_service/mruby/doc/guides/compile.md +142 -49
- data/ext/enterprise_script_service/mruby/doc/guides/debugger.md +5 -4
- data/ext/enterprise_script_service/mruby/doc/guides/gc-arena-howto.md +1 -1
- data/ext/enterprise_script_service/mruby/doc/guides/mrbconf.md +53 -30
- data/ext/enterprise_script_service/mruby/doc/guides/mrbgems.md +31 -14
- data/ext/enterprise_script_service/mruby/doc/guides/symbol.md +83 -0
- data/ext/enterprise_script_service/mruby/doc/limitations.md +35 -36
- data/ext/enterprise_script_service/mruby/doc/mruby3.md +163 -0
- data/ext/enterprise_script_service/mruby/doc/opcode.md +102 -103
- data/ext/enterprise_script_service/mruby/examples/mrbgems/c_and_ruby_extension_example/mrblib/example.rb +1 -1
- data/ext/enterprise_script_service/mruby/examples/mrbgems/c_and_ruby_extension_example/src/example.c +5 -1
- data/ext/enterprise_script_service/mruby/examples/mrbgems/c_extension_example/src/example.c +5 -1
- data/ext/enterprise_script_service/mruby/examples/mrbgems/ruby_extension_example/mrblib/example.rb +1 -1
- data/ext/enterprise_script_service/mruby/include/mrbconf.h +88 -66
- data/ext/enterprise_script_service/mruby/include/mruby.h +160 -104
- data/ext/enterprise_script_service/mruby/include/mruby/array.h +27 -6
- data/ext/enterprise_script_service/mruby/include/mruby/boxing_nan.h +80 -46
- data/ext/enterprise_script_service/mruby/include/mruby/boxing_no.h +8 -8
- data/ext/enterprise_script_service/mruby/include/mruby/boxing_word.h +76 -55
- data/ext/enterprise_script_service/mruby/include/mruby/class.h +10 -8
- data/ext/enterprise_script_service/mruby/include/mruby/common.h +14 -1
- data/ext/enterprise_script_service/mruby/include/mruby/compile.h +20 -6
- data/ext/enterprise_script_service/mruby/include/mruby/debug.h +2 -2
- data/ext/enterprise_script_service/mruby/include/mruby/dump.h +18 -52
- data/ext/enterprise_script_service/mruby/include/mruby/endian.h +44 -0
- data/ext/enterprise_script_service/mruby/include/mruby/error.h +39 -5
- data/ext/enterprise_script_service/mruby/include/mruby/gc.h +1 -0
- data/ext/enterprise_script_service/mruby/include/mruby/hash.h +33 -13
- data/ext/enterprise_script_service/mruby/include/mruby/irep.h +74 -14
- data/ext/enterprise_script_service/mruby/include/mruby/istruct.h +4 -1
- data/ext/enterprise_script_service/mruby/include/mruby/khash.h +19 -9
- data/ext/enterprise_script_service/mruby/include/mruby/numeric.h +37 -63
- data/ext/enterprise_script_service/mruby/include/mruby/opcode.h +1 -27
- data/ext/enterprise_script_service/mruby/include/mruby/ops.h +29 -24
- data/ext/enterprise_script_service/mruby/include/mruby/presym.h +40 -0
- data/ext/enterprise_script_service/mruby/include/mruby/presym/disable.h +70 -0
- data/ext/enterprise_script_service/mruby/include/mruby/presym/enable.h +37 -0
- data/ext/enterprise_script_service/mruby/include/mruby/presym/scanning.h +73 -0
- data/ext/enterprise_script_service/mruby/include/mruby/proc.h +93 -21
- data/ext/enterprise_script_service/mruby/include/mruby/string.h +12 -16
- data/ext/enterprise_script_service/mruby/include/mruby/throw.h +14 -3
- data/ext/enterprise_script_service/mruby/include/mruby/value.h +60 -59
- data/ext/enterprise_script_service/mruby/include/mruby/variable.h +1 -0
- data/ext/enterprise_script_service/mruby/include/mruby/version.h +25 -6
- data/ext/enterprise_script_service/mruby/lib/mruby/build.rb +198 -72
- data/ext/enterprise_script_service/mruby/lib/mruby/build/command.rb +71 -78
- data/ext/enterprise_script_service/mruby/lib/mruby/build/load_gems.rb +12 -10
- data/ext/enterprise_script_service/mruby/lib/{mruby-core-ext.rb → mruby/core_ext.rb} +10 -3
- data/ext/enterprise_script_service/mruby/lib/mruby/gem.rb +84 -32
- data/ext/enterprise_script_service/mruby/lib/mruby/lockfile.rb +1 -1
- data/ext/enterprise_script_service/mruby/lib/mruby/presym.rb +132 -0
- data/ext/enterprise_script_service/mruby/lib/mruby/source.rb +3 -1
- data/ext/enterprise_script_service/mruby/mrbgems/default-no-fpu.gembox +3 -0
- data/ext/enterprise_script_service/mruby/mrbgems/default-no-stdio.gembox +4 -0
- data/ext/enterprise_script_service/mruby/mrbgems/default.gembox +9 -81
- data/ext/enterprise_script_service/mruby/mrbgems/full-core.gembox +1 -4
- data/ext/enterprise_script_service/mruby/mrbgems/math.gembox +10 -0
- data/ext/enterprise_script_service/mruby/mrbgems/metaprog.gembox +15 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/mrblib/array.rb +1 -32
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/src/array.c +10 -12
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/test/array.rb +0 -13
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-config/mrbgem.rake +30 -18
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-config/mruby-config +18 -8
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/bintest/mrdb.rb +3 -6
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/bintest/print.rb +10 -10
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apibreak.c +14 -9
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.c +3 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.c +4 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.h +2 -6
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdbconf.h +6 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/bintest/mirb.rb +23 -5
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/mrbgem.rake +11 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +46 -35
- data/ext/enterprise_script_service/mruby/mrbgems/{mruby-compiler → mruby-bin-mrbc}/bintest/mrbc.rb +0 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mrbc/mrbgem.rake +3 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mrbc/tools/mrbc/mrbc.c +41 -28
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/bintest/mruby.rb +25 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/mrbgem.rake +1 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +26 -6
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-strip/bintest/mruby-strip.rb +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-strip/tools/mruby-strip/mruby-strip.c +6 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-catch/mrbgem.rake +5 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-catch/mrblib/catch.rb +27 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-class-ext/src/class.c +7 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/codegen.c +495 -436
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/keywords +5 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/lex.def +49 -44
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/parse.y +637 -220
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/y.tab.c +13734 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/mrbgem.rake +20 -23
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/mrblib/complex.rb +2 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/src/complex.c +9 -9
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/test/complex.rb +4 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-enumerator/mrblib/enumerator.rb +1 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-enumerator/test/enumerator.rb +2 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-error/mrbgem.rake +2 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-error/src/exception.c +3 -3
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-eval/src/eval.c +19 -238
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-eval/test/eval.rb +21 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-fiber/src/fiber.c +19 -15
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-hash-ext/src/hash-ext.c +31 -5
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-hash-ext/test/hash.rb +7 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-inline-struct/test/inline.c +5 -6
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/README.md +18 -16
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/include/mruby/ext/io.h +39 -7
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrbgem.rake +2 -8
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/file.rb +9 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/file_constants.rb +0 -16
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/io.rb +9 -14
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file.c +107 -59
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file_test.c +22 -38
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/io.c +417 -203
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/file.rb +20 -12
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/io.rb +33 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/mruby_io_test.c +58 -50
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-kernel-ext/src/kernel.c +13 -14
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-math/src/math.c +13 -12
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-math/test/math.rb +5 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/src/metaprog.c +56 -73
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/test/metaprog.rb +13 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/README.md +4 -3
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/src/method.c +80 -78
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/test/method.rb +4 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-numeric-ext/src/numeric_ext.c +14 -13
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-object-ext/src/object.c +8 -16
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-objectspace/src/mruby_objectspace.c +18 -13
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-os-memsize/mrbgem.rake +10 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-os-memsize/src/memsize.c +231 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-os-memsize/test/memsize.rb +63 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-pack/README.md +15 -18
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-pack/src/pack.c +120 -67
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-print/mrblib/print.rb +1 -30
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-print/src/print.c +65 -26
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-proc-ext/src/proc.c +34 -21
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-proc-ext/test/proc.c +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-random/src/random.c +98 -43
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-random/test/random.rb +2 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/mrblib/range.rb +39 -6
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/src/range.c +21 -43
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/test/range.rb +27 -3
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/mrblib/rational.rb +12 -20
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/src/rational.c +216 -38
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/test/rational.rb +6 -6
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/README.md +6 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/src/mrb_sleep.c +5 -5
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/README.md +3 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrbgem.rake +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/src/socket.c +47 -45
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/test/sockettest.c +3 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/src/sprintf.c +161 -93
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/test/sprintf.rb +9 -25
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/mrblib/string.rb +23 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/src/string.c +17 -14
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-struct/mrblib/struct.rb +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-struct/src/struct.c +23 -36
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-symbol-ext/src/symbol.c +7 -6
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-symbol-ext/test/symbol.rb +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/README.md +0 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/driver.c +5 -5
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/mrbgem.rake +17 -44
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/vformat.c +4 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-time/src/time.c +37 -41
- data/ext/enterprise_script_service/mruby/mrbgems/stdlib-ext.gembox +18 -0
- data/ext/enterprise_script_service/mruby/mrbgems/stdlib-io.gembox +12 -0
- data/ext/enterprise_script_service/mruby/mrbgems/stdlib.gembox +54 -0
- data/ext/enterprise_script_service/mruby/mrblib/00class.rb +10 -0
- data/ext/enterprise_script_service/mruby/mrblib/10error.rb +4 -0
- data/ext/enterprise_script_service/mruby/mrblib/array.rb +17 -9
- data/ext/enterprise_script_service/mruby/mrblib/enum.rb +1 -1
- data/ext/enterprise_script_service/mruby/mrblib/hash.rb +3 -23
- data/ext/enterprise_script_service/mruby/mrblib/init_mrblib.c +0 -11
- data/ext/enterprise_script_service/mruby/mrblib/numeric.rb +36 -11
- data/ext/enterprise_script_service/mruby/mrblib/range.rb +25 -3
- data/ext/enterprise_script_service/mruby/oss-fuzz/mruby_proto_fuzzer.cpp +2 -2
- data/ext/enterprise_script_service/mruby/oss-fuzz/proto_to_ruby.h +1 -1
- data/ext/enterprise_script_service/mruby/src/array.c +67 -90
- data/ext/enterprise_script_service/mruby/src/backtrace.c +18 -19
- data/ext/enterprise_script_service/mruby/src/class.c +819 -211
- data/ext/enterprise_script_service/mruby/src/codedump.c +226 -197
- data/ext/enterprise_script_service/mruby/src/debug.c +14 -11
- data/ext/enterprise_script_service/mruby/src/dump.c +470 -207
- data/ext/enterprise_script_service/mruby/src/enum.c +1 -1
- data/ext/enterprise_script_service/mruby/src/error.c +94 -20
- data/ext/enterprise_script_service/mruby/src/etc.c +56 -39
- data/ext/enterprise_script_service/mruby/src/fmt_fp.c +103 -27
- data/ext/enterprise_script_service/mruby/src/gc.c +86 -349
- data/ext/enterprise_script_service/mruby/src/hash.c +1058 -723
- data/ext/enterprise_script_service/mruby/src/kernel.c +78 -226
- data/ext/enterprise_script_service/mruby/src/load.c +215 -159
- data/ext/enterprise_script_service/mruby/src/numeric.c +400 -382
- data/ext/enterprise_script_service/mruby/src/object.c +115 -90
- data/ext/enterprise_script_service/mruby/src/print.c +31 -6
- data/ext/enterprise_script_service/mruby/src/proc.c +56 -45
- data/ext/enterprise_script_service/mruby/src/range.c +49 -33
- data/ext/enterprise_script_service/mruby/src/state.c +58 -42
- data/ext/enterprise_script_service/mruby/src/string.c +151 -156
- data/ext/enterprise_script_service/mruby/src/symbol.c +132 -66
- data/ext/enterprise_script_service/mruby/src/value_array.h +1 -0
- data/ext/enterprise_script_service/mruby/src/variable.c +158 -158
- data/ext/enterprise_script_service/mruby/src/vm.c +655 -645
- data/ext/enterprise_script_service/mruby/tasks/benchmark.rake +6 -6
- data/ext/enterprise_script_service/mruby/tasks/bin.rake +23 -0
- data/ext/enterprise_script_service/mruby/tasks/core.rake +12 -0
- data/ext/enterprise_script_service/mruby/tasks/doc.rake +50 -38
- data/ext/enterprise_script_service/mruby/tasks/gitlab.rake +64 -61
- data/ext/enterprise_script_service/mruby/tasks/libmruby.rake +10 -1
- data/ext/enterprise_script_service/mruby/tasks/mrbgems.rake +13 -1
- data/ext/enterprise_script_service/mruby/tasks/mrblib.rake +40 -0
- data/ext/enterprise_script_service/mruby/tasks/presym.rake +44 -0
- data/ext/enterprise_script_service/mruby/tasks/test.rake +68 -0
- data/ext/enterprise_script_service/mruby/tasks/toolchains/android.rake +46 -1
- data/ext/enterprise_script_service/mruby/tasks/toolchains/gcc.rake +8 -7
- data/ext/enterprise_script_service/mruby/tasks/toolchains/openwrt.rake +13 -17
- data/ext/enterprise_script_service/mruby/tasks/toolchains/visualcpp.rake +21 -25
- data/ext/enterprise_script_service/mruby/test/assert.rb +5 -4
- data/ext/enterprise_script_service/mruby/test/bintest.rb +5 -5
- data/ext/enterprise_script_service/mruby/test/t/argumenterror.rb +16 -0
- data/ext/enterprise_script_service/mruby/test/t/array.rb +7 -3
- data/ext/enterprise_script_service/mruby/test/t/bs_literal.rb +1 -1
- data/ext/enterprise_script_service/mruby/test/t/ensure.rb +8 -26
- data/ext/enterprise_script_service/mruby/test/t/exception.rb +2 -2
- data/ext/enterprise_script_service/mruby/test/t/float.rb +18 -8
- data/ext/enterprise_script_service/mruby/test/t/hash.rb +903 -281
- data/ext/enterprise_script_service/mruby/test/t/integer.rb +10 -38
- data/ext/enterprise_script_service/mruby/test/t/kernel.rb +16 -25
- data/ext/enterprise_script_service/mruby/test/t/literals.rb +50 -0
- data/ext/enterprise_script_service/mruby/test/t/module.rb +2 -2
- data/ext/enterprise_script_service/mruby/test/t/numeric.rb +1 -1
- data/ext/enterprise_script_service/mruby/test/t/range.rb +83 -1
- data/ext/enterprise_script_service/mruby/test/t/string.rb +4 -0
- data/ext/enterprise_script_service/mruby/test/t/superclass.rb +10 -10
- data/ext/enterprise_script_service/mruby/test/t/syntax.rb +24 -0
- data/ext/enterprise_script_service/mruby/test/t/vformat.rb +3 -3
- data/ext/enterprise_script_service/mruby_config.rb +2 -5
- data/ext/enterprise_script_service/mruby_engine.cpp +1 -1
- data/ext/enterprise_script_service/msgpack/.github/depends/boost.sh +56 -0
- data/ext/enterprise_script_service/msgpack/.github/workflows/coverage.yml +62 -0
- data/ext/enterprise_script_service/msgpack/.github/workflows/gha.yml +304 -0
- data/ext/enterprise_script_service/msgpack/CHANGELOG.md +11 -0
- data/ext/enterprise_script_service/msgpack/CMakeLists.txt +82 -39
- data/ext/enterprise_script_service/msgpack/Files.cmake +22 -12
- data/ext/enterprise_script_service/msgpack/QUICKSTART-C.md +26 -29
- data/ext/enterprise_script_service/msgpack/README.md +3 -2
- data/ext/enterprise_script_service/msgpack/appveyor.yml +6 -2
- data/ext/enterprise_script_service/msgpack/ci/build_cmake.sh +3 -1
- data/ext/enterprise_script_service/msgpack/cmake/CodeCoverage.cmake +55 -0
- data/ext/enterprise_script_service/msgpack/codecov.yml +36 -0
- data/ext/enterprise_script_service/msgpack/example/CMakeLists.txt +9 -5
- data/ext/enterprise_script_service/msgpack/example/boost/CMakeLists.txt +1 -1
- data/ext/enterprise_script_service/msgpack/example/c/CMakeLists.txt +17 -6
- data/ext/enterprise_script_service/msgpack/example/c/boundary.c +296 -0
- data/ext/enterprise_script_service/msgpack/example/c/jsonconv.c +419 -0
- data/ext/enterprise_script_service/msgpack/example/c/simple_c.c +1 -1
- data/ext/enterprise_script_service/msgpack/example/cpp03/CMakeLists.txt +3 -3
- data/ext/enterprise_script_service/msgpack/example/cpp11/CMakeLists.txt +2 -2
- data/ext/enterprise_script_service/msgpack/example/x3/CMakeLists.txt +2 -2
- data/ext/enterprise_script_service/msgpack/include/msgpack/pack.h +24 -1
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/array_ref.hpp +5 -4
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/boost/optional.hpp +4 -4
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp17/vector_byte.hpp +8 -8
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/map.hpp +4 -4
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector.hpp +4 -4
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector_char.hpp +8 -8
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector_unsigned_char.hpp +8 -8
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/wstring.hpp +4 -4
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/unpack.hpp +6 -6
- data/ext/enterprise_script_service/msgpack/include/msgpack/version_master.h +2 -2
- data/ext/enterprise_script_service/msgpack/include/msgpack/zbuffer.h +4 -4
- data/ext/enterprise_script_service/msgpack/make_file_list.sh +38 -11
- data/ext/enterprise_script_service/msgpack/src/vrefbuffer.c +6 -0
- data/ext/enterprise_script_service/msgpack/test/CMakeLists.txt +86 -64
- data/ext/enterprise_script_service/msgpack/test/array_ref.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/boost_fusion.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/boost_optional.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/boost_string_ref.cpp +4 -1
- data/ext/enterprise_script_service/msgpack/test/boost_string_view.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/boost_variant.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/buffer.cpp +4 -47
- data/ext/enterprise_script_service/msgpack/test/buffer_c.cpp +148 -0
- data/ext/enterprise_script_service/msgpack/test/carray.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/cases.cpp +8 -4
- data/ext/enterprise_script_service/msgpack/test/convert.cpp +8 -4
- data/ext/enterprise_script_service/msgpack/test/fixint.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/fixint_c.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/fuzz_unpack_pack_fuzzer_cpp11.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/iterator_cpp11.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/json.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/limit.cpp +8 -4
- data/ext/enterprise_script_service/msgpack/test/msgpack_basic.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/msgpack_c.cpp +159 -0
- data/ext/enterprise_script_service/msgpack/test/msgpack_container.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/msgpack_cpp11.cpp +32 -27
- data/ext/enterprise_script_service/msgpack/test/msgpack_cpp17.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/msgpack_stream.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/msgpack_tuple.cpp +4 -1
- data/ext/enterprise_script_service/msgpack/test/msgpack_vref.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/msgpack_x3_parse.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/object.cpp +4 -1
- data/ext/enterprise_script_service/msgpack/test/object_with_zone.cpp +12 -8
- data/ext/enterprise_script_service/msgpack/test/pack_unpack.cpp +30 -26
- data/ext/enterprise_script_service/msgpack/test/pack_unpack_c.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/raw.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/reference.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/reference_cpp11.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/reference_wrapper_cpp11.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/shared_ptr_cpp11.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/size_equal_only.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/streaming.cpp +8 -4
- data/ext/enterprise_script_service/msgpack/test/streaming_c.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/unique_ptr_cpp11.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/user_class.cpp +16 -12
- data/ext/enterprise_script_service/msgpack/test/version.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/visitor.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/zone.cpp +4 -0
- data/lib/script_core/engine.rb +24 -5
- data/lib/script_core/executable.rb +4 -3
- data/lib/script_core/version.rb +1 -1
- data/lib/tasks/script_core.rake +3 -1
- data/script_core.gemspec +1 -2
- data/spec/dummy/app/lib/script_engine.rb +64 -5
- data/spec/script_core_spec.rb +13 -0
- metadata +123 -61
- data/ext/enterprise_script_service/libseccomp/src/arch-aarch64-syscalls.c +0 -559
- data/ext/enterprise_script_service/libseccomp/src/arch-arm-syscalls.c +0 -570
- data/ext/enterprise_script_service/libseccomp/src/arch-mips-syscalls.c +0 -562
- data/ext/enterprise_script_service/libseccomp/src/arch-mips64-syscalls.c +0 -562
- data/ext/enterprise_script_service/libseccomp/src/arch-mips64n32-syscalls.c +0 -562
- data/ext/enterprise_script_service/libseccomp/src/arch-parisc-syscalls.c +0 -542
- data/ext/enterprise_script_service/libseccomp/src/arch-ppc-syscalls.c +0 -559
- data/ext/enterprise_script_service/libseccomp/src/arch-ppc64-syscalls.c +0 -559
- data/ext/enterprise_script_service/libseccomp/src/arch-s390-syscalls.c +0 -626
- data/ext/enterprise_script_service/libseccomp/src/arch-s390x-syscalls.c +0 -626
- data/ext/enterprise_script_service/libseccomp/src/arch-x32-syscalls.c +0 -558
- data/ext/enterprise_script_service/libseccomp/src/arch-x86-syscalls.c +0 -692
- data/ext/enterprise_script_service/libseccomp/src/arch-x86_64-syscalls.c +0 -559
- data/ext/enterprise_script_service/libseccomp/tests/18-sim-basic_whitelist.tests +0 -32
- data/ext/enterprise_script_service/libseccomp/tests/34-sim-basic_blacklist.tests +0 -32
- data/ext/enterprise_script_service/mruby/TODO +0 -8
- data/ext/enterprise_script_service/mruby/benchmark/build_config_boxing.rb +0 -28
- data/ext/enterprise_script_service/mruby/examples/targets/build_config_android_arm64-v8a.rb +0 -26
- data/ext/enterprise_script_service/mruby/examples/targets/build_config_android_armeabi.rb +0 -26
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/src/kernel.c +0 -30
- data/ext/enterprise_script_service/mruby/mrblib/mrblib.rake +0 -18
- data/ext/enterprise_script_service/mruby/src/crc.c +0 -39
- data/ext/enterprise_script_service/mruby/src/mruby_core.rake +0 -19
- data/ext/enterprise_script_service/mruby/travis_config.rb +0 -54
- data/ext/enterprise_script_service/msgpack/.travis.yml +0 -258
@@ -9,6 +9,7 @@
|
|
9
9
|
#include <mruby/range.h>
|
10
10
|
#include <mruby/string.h>
|
11
11
|
#include <mruby/array.h>
|
12
|
+
#include <mruby/presym.h>
|
12
13
|
|
13
14
|
#define RANGE_INITIALIZED_MASK 1
|
14
15
|
#define RANGE_INITIALIZED(p) ((p)->flags |= RANGE_INITIALIZED_MASK)
|
@@ -23,15 +24,17 @@ r_check(mrb_state *mrb, mrb_value a, mrb_value b)
|
|
23
24
|
|
24
25
|
ta = mrb_type(a);
|
25
26
|
tb = mrb_type(b);
|
26
|
-
#ifdef
|
27
|
-
if (ta ==
|
27
|
+
#ifdef MRB_NO_FLOAT
|
28
|
+
if (ta == MRB_TT_INTEGER && tb == MRB_TT_INTEGER ) {
|
28
29
|
#else
|
29
|
-
if ((ta ==
|
30
|
-
(tb ==
|
30
|
+
if ((ta == MRB_TT_INTEGER || ta == MRB_TT_FLOAT) &&
|
31
|
+
(tb == MRB_TT_INTEGER || tb == MRB_TT_FLOAT)) {
|
31
32
|
#endif
|
32
33
|
return;
|
33
34
|
}
|
34
35
|
|
36
|
+
if (mrb_nil_p(a) || mrb_nil_p(b)) return;
|
37
|
+
|
35
38
|
n = mrb_cmp(mrb, a, b);
|
36
39
|
if (n == -2) { /* can not be compared */
|
37
40
|
mrb_raise(mrb, E_ARGUMENT_ERROR, "bad value for range");
|
@@ -78,7 +81,7 @@ range_ptr_init(mrb_state *mrb, struct RRange *r, mrb_value beg, mrb_value end, m
|
|
78
81
|
if (r) {
|
79
82
|
if (RANGE_INITIALIZED_P(r)) {
|
80
83
|
/* Ranges are immutable, so that they should be initialized only once. */
|
81
|
-
mrb_name_error(mrb,
|
84
|
+
mrb_name_error(mrb, MRB_SYM(initialize), "'initialize' called twice");
|
82
85
|
}
|
83
86
|
else {
|
84
87
|
range_ptr_alloc_edges(mrb, r);
|
@@ -161,6 +164,7 @@ range_initialize(mrb_state *mrb, mrb_value range)
|
|
161
164
|
|
162
165
|
mrb_get_args(mrb, "oo|b", &beg, &end, &exclusive);
|
163
166
|
range_ptr_replace(mrb, mrb_range_raw_ptr(range), beg, end, exclusive);
|
167
|
+
mrb_obj_freeze(mrb, range);
|
164
168
|
return range;
|
165
169
|
}
|
166
170
|
|
@@ -182,11 +186,9 @@ range_eq(mrb_state *mrb, mrb_value range)
|
|
182
186
|
{
|
183
187
|
struct RRange *rr;
|
184
188
|
struct RRange *ro;
|
185
|
-
mrb_value obj;
|
189
|
+
mrb_value obj = mrb_get_arg1(mrb);
|
186
190
|
mrb_bool v1, v2;
|
187
191
|
|
188
|
-
mrb_get_args(mrb, "o", &obj);
|
189
|
-
|
190
192
|
if (mrb_obj_equal(mrb, range, obj)) return mrb_true_value();
|
191
193
|
if (!mrb_obj_is_instance_of(mrb, obj, mrb_obj_class(mrb, range))) { /* same class? */
|
192
194
|
return mrb_false_value();
|
@@ -211,20 +213,28 @@ range_eq(mrb_state *mrb, mrb_value range)
|
|
211
213
|
static mrb_value
|
212
214
|
range_include(mrb_state *mrb, mrb_value range)
|
213
215
|
{
|
214
|
-
mrb_value val;
|
216
|
+
mrb_value val = mrb_get_arg1(mrb);
|
215
217
|
struct RRange *r = mrb_range_ptr(mrb, range);
|
216
218
|
mrb_value beg, end;
|
217
|
-
mrb_bool include_p;
|
218
|
-
|
219
|
-
mrb_get_args(mrb, "o", &val);
|
220
219
|
|
221
220
|
beg = RANGE_BEG(r);
|
222
221
|
end = RANGE_END(r);
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
222
|
+
if (mrb_nil_p(beg)) {
|
223
|
+
if (RANGE_EXCL(r) ? r_gt(mrb, end, val) /* end > val */
|
224
|
+
: r_ge(mrb, end, val)) { /* end >= val */
|
225
|
+
return mrb_true_value();
|
226
|
+
}
|
227
|
+
}
|
228
|
+
else if (r_le(mrb, beg, val)) { /* beg <= val */
|
229
|
+
if (mrb_nil_p(end)) {
|
230
|
+
return mrb_true_value();
|
231
|
+
}
|
232
|
+
if (RANGE_EXCL(r) ? r_gt(mrb, end, val) /* end > val */
|
233
|
+
: r_ge(mrb, end, val)) { /* end >= val */
|
234
|
+
return mrb_true_value();
|
235
|
+
}
|
236
|
+
}
|
237
|
+
return mrb_false_value();
|
228
238
|
}
|
229
239
|
|
230
240
|
/* 15.2.14.4.12(x) */
|
@@ -261,14 +271,21 @@ range_to_s(mrb_state *mrb, mrb_value range)
|
|
261
271
|
static mrb_value
|
262
272
|
range_inspect(mrb_state *mrb, mrb_value range)
|
263
273
|
{
|
264
|
-
mrb_value str
|
274
|
+
mrb_value str;
|
265
275
|
struct RRange *r = mrb_range_ptr(mrb, range);
|
266
276
|
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
277
|
+
if (!mrb_nil_p(RANGE_BEG(r))) {
|
278
|
+
str = mrb_inspect(mrb, RANGE_BEG(r));
|
279
|
+
str = mrb_str_dup(mrb, str);
|
280
|
+
mrb_str_cat(mrb, str, "...", RANGE_EXCL(r) ? 3 : 2);
|
281
|
+
}
|
282
|
+
else {
|
283
|
+
str = mrb_str_new(mrb, "...", RANGE_EXCL(r) ? 3 : 2);
|
284
|
+
}
|
285
|
+
if (!mrb_nil_p(RANGE_END(r))) {
|
286
|
+
mrb_value str2 = mrb_inspect(mrb, RANGE_END(r));
|
287
|
+
mrb_str_cat_str(mrb, str, str2);
|
288
|
+
}
|
272
289
|
|
273
290
|
return str;
|
274
291
|
}
|
@@ -289,11 +306,9 @@ range_inspect(mrb_state *mrb, mrb_value range)
|
|
289
306
|
static mrb_value
|
290
307
|
range_eql(mrb_state *mrb, mrb_value range)
|
291
308
|
{
|
292
|
-
mrb_value obj;
|
309
|
+
mrb_value obj = mrb_get_arg1(mrb);
|
293
310
|
struct RRange *r, *o;
|
294
311
|
|
295
|
-
mrb_get_args(mrb, "o", &obj);
|
296
|
-
|
297
312
|
if (mrb_obj_equal(mrb, range, obj)) return mrb_true_value();
|
298
313
|
if (!mrb_obj_is_kind_of(mrb, obj, mrb->range_class)) return mrb_false_value();
|
299
314
|
if (!mrb_range_p(obj)) return mrb_false_value();
|
@@ -312,11 +327,9 @@ range_eql(mrb_state *mrb, mrb_value range)
|
|
312
327
|
static mrb_value
|
313
328
|
range_initialize_copy(mrb_state *mrb, mrb_value copy)
|
314
329
|
{
|
315
|
-
mrb_value src;
|
330
|
+
mrb_value src = mrb_get_arg1(mrb);
|
316
331
|
struct RRange *r;
|
317
332
|
|
318
|
-
mrb_get_args(mrb, "o", &src);
|
319
|
-
|
320
333
|
if (mrb_obj_equal(mrb, copy, src)) return copy;
|
321
334
|
if (!mrb_obj_is_instance_of(mrb, src, mrb_obj_class(mrb, copy))) {
|
322
335
|
mrb_raise(mrb, E_TYPE_ERROR, "wrong argument class");
|
@@ -324,6 +337,7 @@ range_initialize_copy(mrb_state *mrb, mrb_value copy)
|
|
324
337
|
|
325
338
|
r = mrb_range_ptr(mrb, src);
|
326
339
|
range_ptr_replace(mrb, mrb_range_raw_ptr(copy), RANGE_BEG(r), RANGE_END(r), RANGE_EXCL(r));
|
340
|
+
mrb_obj_freeze(mrb, copy);
|
327
341
|
|
328
342
|
return copy;
|
329
343
|
}
|
@@ -336,8 +350,8 @@ mrb_get_values_at(mrb_state *mrb, mrb_value obj, mrb_int olen, mrb_int argc, con
|
|
336
350
|
result = mrb_ary_new(mrb);
|
337
351
|
|
338
352
|
for (i = 0; i < argc; ++i) {
|
339
|
-
if (
|
340
|
-
mrb_ary_push(mrb, result, func(mrb, obj,
|
353
|
+
if (mrb_integer_p(argv[i])) {
|
354
|
+
mrb_ary_push(mrb, result, func(mrb, obj, mrb_integer(argv[i])));
|
341
355
|
}
|
342
356
|
else if (mrb_range_beg_len(mrb, argv[i], &beg, &len, olen, FALSE) == MRB_RANGE_OK) {
|
343
357
|
mrb_int const end = olen < beg + len ? olen : beg + len;
|
@@ -389,13 +403,15 @@ MRB_API enum mrb_range_beg_len
|
|
389
403
|
mrb_range_beg_len(mrb_state *mrb, mrb_value range, mrb_int *begp, mrb_int *lenp, mrb_int len, mrb_bool trunc)
|
390
404
|
{
|
391
405
|
mrb_int beg, end;
|
406
|
+
mrb_bool excl;
|
392
407
|
struct RRange *r;
|
393
408
|
|
394
409
|
if (!mrb_range_p(range)) return MRB_RANGE_TYPE_MISMATCH;
|
395
410
|
r = mrb_range_ptr(mrb, range);
|
396
411
|
|
397
412
|
beg = mrb_int(mrb, RANGE_BEG(r));
|
398
|
-
end = mrb_int(mrb, RANGE_END(r));
|
413
|
+
end = mrb_nil_p(RANGE_END(r)) ? -1 : mrb_int(mrb, RANGE_END(r));
|
414
|
+
excl = mrb_nil_p(RANGE_END(r)) ? 0 : RANGE_EXCL(r);
|
399
415
|
|
400
416
|
if (beg < 0) {
|
401
417
|
beg += len;
|
@@ -408,7 +424,7 @@ mrb_range_beg_len(mrb_state *mrb, mrb_value range, mrb_int *begp, mrb_int *lenp,
|
|
408
424
|
}
|
409
425
|
|
410
426
|
if (end < 0) end += len;
|
411
|
-
if (!
|
427
|
+
if (!excl && (!trunc || end < len)) end++; /* include end point */
|
412
428
|
len = end - beg;
|
413
429
|
if (len < 0) len = 0;
|
414
430
|
|
@@ -19,11 +19,25 @@ void mrb_init_mrbgems(mrb_state*);
|
|
19
19
|
void mrb_gc_init(mrb_state*, mrb_gc *gc);
|
20
20
|
void mrb_gc_destroy(mrb_state*, mrb_gc *gc);
|
21
21
|
|
22
|
+
int mrb_core_init_protect(mrb_state *mrb, void (*body)(mrb_state *, void *), void *opaque);
|
23
|
+
|
24
|
+
static void
|
25
|
+
init_gc_and_core(mrb_state *mrb, void *opaque)
|
26
|
+
{
|
27
|
+
static const struct mrb_context mrb_context_zero = { 0 };
|
28
|
+
|
29
|
+
mrb_gc_init(mrb, &mrb->gc);
|
30
|
+
mrb->c = (struct mrb_context*)mrb_malloc(mrb, sizeof(struct mrb_context));
|
31
|
+
*mrb->c = mrb_context_zero;
|
32
|
+
mrb->root_c = mrb->c;
|
33
|
+
|
34
|
+
mrb_init_core(mrb);
|
35
|
+
}
|
36
|
+
|
22
37
|
MRB_API mrb_state*
|
23
38
|
mrb_open_core(mrb_allocf f, void *ud)
|
24
39
|
{
|
25
40
|
static const mrb_state mrb_state_zero = { 0 };
|
26
|
-
static const struct mrb_context mrb_context_zero = { 0 };
|
27
41
|
mrb_state *mrb;
|
28
42
|
|
29
43
|
if (f == NULL) f = mrb_default_allocf;
|
@@ -35,12 +49,10 @@ mrb_open_core(mrb_allocf f, void *ud)
|
|
35
49
|
mrb->allocf = f;
|
36
50
|
mrb->atexit_stack_len = 0;
|
37
51
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
mrb_init_core(mrb);
|
52
|
+
if (mrb_core_init_protect(mrb, init_gc_and_core, NULL)) {
|
53
|
+
mrb_close(mrb);
|
54
|
+
return NULL;
|
55
|
+
}
|
44
56
|
|
45
57
|
return mrb;
|
46
58
|
}
|
@@ -65,6 +77,14 @@ mrb_open(void)
|
|
65
77
|
return mrb;
|
66
78
|
}
|
67
79
|
|
80
|
+
#ifndef MRB_NO_GEMS
|
81
|
+
static void
|
82
|
+
init_mrbgems(mrb_state *mrb, void *opaque)
|
83
|
+
{
|
84
|
+
mrb_init_mrbgems(mrb);
|
85
|
+
}
|
86
|
+
#endif
|
87
|
+
|
68
88
|
MRB_API mrb_state*
|
69
89
|
mrb_open_allocf(mrb_allocf f, void *ud)
|
70
90
|
{
|
@@ -74,8 +94,11 @@ mrb_open_allocf(mrb_allocf f, void *ud)
|
|
74
94
|
return NULL;
|
75
95
|
}
|
76
96
|
|
77
|
-
#ifndef
|
78
|
-
|
97
|
+
#ifndef MRB_NO_GEMS
|
98
|
+
if (mrb_core_init_protect(mrb, init_mrbgems, NULL)) {
|
99
|
+
mrb_close(mrb);
|
100
|
+
return NULL;
|
101
|
+
}
|
79
102
|
mrb_gc_arena_restore(mrb, 0);
|
80
103
|
#endif
|
81
104
|
return mrb;
|
@@ -86,12 +109,14 @@ void mrb_free_symtbl(mrb_state *mrb);
|
|
86
109
|
void
|
87
110
|
mrb_irep_incref(mrb_state *mrb, mrb_irep *irep)
|
88
111
|
{
|
112
|
+
if (irep->flags & MRB_IREP_NO_FREE) return;
|
89
113
|
irep->refcnt++;
|
90
114
|
}
|
91
115
|
|
92
116
|
void
|
93
117
|
mrb_irep_decref(mrb_state *mrb, mrb_irep *irep)
|
94
118
|
{
|
119
|
+
if (irep->flags & MRB_IREP_NO_FREE) return;
|
95
120
|
irep->refcnt--;
|
96
121
|
if (irep->refcnt == 0) {
|
97
122
|
mrb_irep_free(mrb, irep);
|
@@ -101,12 +126,14 @@ mrb_irep_decref(mrb_state *mrb, mrb_irep *irep)
|
|
101
126
|
void
|
102
127
|
mrb_irep_cutref(mrb_state *mrb, mrb_irep *irep)
|
103
128
|
{
|
104
|
-
mrb_irep
|
129
|
+
mrb_irep **reps;
|
105
130
|
int i;
|
106
131
|
|
132
|
+
if (irep->flags & MRB_IREP_NO_FREE) return;
|
133
|
+
reps = (mrb_irep**)irep->reps;
|
107
134
|
for (i=0; i<irep->rlen; i++) {
|
108
|
-
tmp =
|
109
|
-
|
135
|
+
mrb_irep *tmp = reps[i];
|
136
|
+
reps[i] = NULL;
|
110
137
|
if (tmp) mrb_irep_decref(mrb, tmp);
|
111
138
|
}
|
112
139
|
}
|
@@ -116,57 +143,46 @@ mrb_irep_free(mrb_state *mrb, mrb_irep *irep)
|
|
116
143
|
{
|
117
144
|
int i;
|
118
145
|
|
146
|
+
if (irep->flags & MRB_IREP_NO_FREE) return;
|
119
147
|
if (!(irep->flags & MRB_ISEQ_NO_FREE))
|
120
148
|
mrb_free(mrb, (void*)irep->iseq);
|
121
|
-
if (irep->pool)
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
#if defined(MRB_WORD_BOXING) && !defined(MRB_WITHOUT_FLOAT)
|
127
|
-
else if (mrb_float_p(irep->pool[i])) {
|
128
|
-
mrb_free(mrb, mrb_obj_ptr(irep->pool[i]));
|
149
|
+
if (irep->pool) {
|
150
|
+
for (i=0; i<irep->plen; i++) {
|
151
|
+
if ((irep->pool[i].tt & 3) == IREP_TT_STR) {
|
152
|
+
mrb_free(mrb, (void*)irep->pool[i].u.str);
|
153
|
+
}
|
129
154
|
}
|
130
|
-
|
155
|
+
mrb_free(mrb, (void*)irep->pool);
|
131
156
|
}
|
132
|
-
mrb_free(mrb, irep->
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
157
|
+
mrb_free(mrb, (void*)irep->syms);
|
158
|
+
if (irep->reps) {
|
159
|
+
for (i=0; i<irep->rlen; i++) {
|
160
|
+
if (irep->reps[i])
|
161
|
+
mrb_irep_decref(mrb, (mrb_irep*)irep->reps[i]);
|
162
|
+
}
|
163
|
+
mrb_free(mrb, (void*)irep->reps);
|
137
164
|
}
|
138
|
-
mrb_free(mrb, irep->
|
139
|
-
mrb_free(mrb, irep->lv);
|
165
|
+
mrb_free(mrb, (void*)irep->lv);
|
140
166
|
mrb_debug_info_free(mrb, irep->debug_info);
|
141
167
|
mrb_free(mrb, irep);
|
142
168
|
}
|
143
169
|
|
144
|
-
void mrb_free_backtrace(mrb_state *mrb);
|
145
|
-
|
146
170
|
MRB_API void
|
147
171
|
mrb_free_context(mrb_state *mrb, struct mrb_context *c)
|
148
172
|
{
|
149
173
|
if (!c) return;
|
150
174
|
mrb_free(mrb, c->stbase);
|
151
175
|
mrb_free(mrb, c->cibase);
|
152
|
-
mrb_free(mrb, c->rescue);
|
153
|
-
mrb_free(mrb, c->ensure);
|
154
176
|
mrb_free(mrb, c);
|
155
177
|
}
|
156
178
|
|
157
|
-
|
179
|
+
int mrb_protect_atexit(mrb_state *mrb);
|
180
|
+
|
181
|
+
MRB_API void
|
158
182
|
mrb_close(mrb_state *mrb)
|
159
183
|
{
|
160
184
|
if (!mrb) return;
|
161
|
-
|
162
|
-
mrb_int i;
|
163
|
-
for (i = mrb->atexit_stack_len; i > 0; --i) {
|
164
|
-
mrb->atexit_stack[i - 1](mrb);
|
165
|
-
}
|
166
|
-
#ifndef MRB_FIXED_STATE_ATEXIT_STACK
|
167
|
-
mrb_free(mrb, mrb->atexit_stack);
|
168
|
-
#endif
|
169
|
-
}
|
185
|
+
mrb_protect_atexit(mrb);
|
170
186
|
|
171
187
|
/* free */
|
172
188
|
mrb_gc_destroy(mrb, &mrb->gc);
|
@@ -8,8 +8,9 @@
|
|
8
8
|
# define _CRT_NONSTDC_NO_DEPRECATE
|
9
9
|
#endif
|
10
10
|
|
11
|
-
#ifndef
|
11
|
+
#ifndef MRB_NO_FLOAT
|
12
12
|
#include <float.h>
|
13
|
+
#include <math.h>
|
13
14
|
#endif
|
14
15
|
#include <limits.h>
|
15
16
|
#include <stddef.h>
|
@@ -21,6 +22,7 @@
|
|
21
22
|
#include <mruby/range.h>
|
22
23
|
#include <mruby/string.h>
|
23
24
|
#include <mruby/numeric.h>
|
25
|
+
#include <mruby/presym.h>
|
24
26
|
|
25
27
|
typedef struct mrb_shared_string {
|
26
28
|
int refcnt;
|
@@ -174,19 +176,6 @@ mrb_str_new_capa(mrb_state *mrb, size_t capa)
|
|
174
176
|
return mrb_obj_value(s);
|
175
177
|
}
|
176
178
|
|
177
|
-
#ifndef MRB_STR_BUF_MIN_SIZE
|
178
|
-
# define MRB_STR_BUF_MIN_SIZE 128
|
179
|
-
#endif
|
180
|
-
|
181
|
-
MRB_API mrb_value
|
182
|
-
mrb_str_buf_new(mrb_state *mrb, size_t capa)
|
183
|
-
{
|
184
|
-
if (capa < MRB_STR_BUF_MIN_SIZE) {
|
185
|
-
capa = MRB_STR_BUF_MIN_SIZE;
|
186
|
-
}
|
187
|
-
return mrb_str_new_capa(mrb, capa);
|
188
|
-
}
|
189
|
-
|
190
179
|
static void
|
191
180
|
resize_capa(mrb_state *mrb, struct RString *s, size_t capacity)
|
192
181
|
{
|
@@ -296,12 +285,14 @@ static const char utf8len_codepage[256] =
|
|
296
285
|
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
297
286
|
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
298
287
|
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
299
|
-
|
288
|
+
1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
|
300
289
|
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,1,1,1,1,1,1,1,1,1,1,1,
|
301
290
|
};
|
302
291
|
|
303
|
-
|
304
|
-
|
292
|
+
#define utf8_islead(c) ((unsigned char)((c)&0xc0) != 0x80)
|
293
|
+
|
294
|
+
mrb_int
|
295
|
+
mrb_utf8len(const char* p, const char* e)
|
305
296
|
{
|
306
297
|
mrb_int len;
|
307
298
|
mrb_int i;
|
@@ -311,23 +302,23 @@ utf8len(const char* p, const char* e)
|
|
311
302
|
if (len == 1) return 1;
|
312
303
|
if (len > e - p) return 1;
|
313
304
|
for (i = 1; i < len; ++i)
|
314
|
-
if ((p[i]
|
305
|
+
if (utf8_islead(p[i]))
|
315
306
|
return 1;
|
316
307
|
return len;
|
317
308
|
}
|
318
309
|
|
319
310
|
mrb_int
|
320
|
-
|
311
|
+
mrb_utf8_strlen(const char *str, mrb_int byte_len)
|
321
312
|
{
|
322
|
-
mrb_int
|
313
|
+
mrb_int len = 0;
|
323
314
|
const char *p = str;
|
324
315
|
const char *e = p + byte_len;
|
325
316
|
|
326
317
|
while (p < e) {
|
327
|
-
p +=
|
328
|
-
|
318
|
+
p += mrb_utf8len(p, e);
|
319
|
+
len++;
|
329
320
|
}
|
330
|
-
return
|
321
|
+
return len;
|
331
322
|
}
|
332
323
|
|
333
324
|
static mrb_int
|
@@ -340,7 +331,7 @@ utf8_strlen(mrb_value str)
|
|
340
331
|
return byte_len;
|
341
332
|
}
|
342
333
|
else {
|
343
|
-
mrb_int utf8_len =
|
334
|
+
mrb_int utf8_len = mrb_utf8_strlen(RSTR_PTR(s), byte_len);
|
344
335
|
if (byte_len == utf8_len) RSTR_SET_ASCII_FLAG(s);
|
345
336
|
return utf8_len;
|
346
337
|
}
|
@@ -361,7 +352,7 @@ chars2bytes(mrb_value s, mrb_int off, mrb_int idx)
|
|
361
352
|
const char *e = RSTRING_END(s);
|
362
353
|
|
363
354
|
for (b=i=0; p<e && i<idx; i++) {
|
364
|
-
n =
|
355
|
+
n = mrb_utf8len(p, e);
|
365
356
|
b += n;
|
366
357
|
p += n;
|
367
358
|
}
|
@@ -378,7 +369,7 @@ bytes2chars(char *p, mrb_int len, mrb_int bi)
|
|
378
369
|
mrb_int i;
|
379
370
|
|
380
371
|
for (i = 0; p < pivot; i ++) {
|
381
|
-
p +=
|
372
|
+
p += mrb_utf8len(p, e);
|
382
373
|
}
|
383
374
|
if (p != pivot) return -1;
|
384
375
|
return i;
|
@@ -399,7 +390,7 @@ char_adjust(const char *beg, const char *end, const char *ptr)
|
|
399
390
|
while (p > beg) {
|
400
391
|
p --;
|
401
392
|
if ((*p & 0xc0) != 0x80) {
|
402
|
-
int clen =
|
393
|
+
int clen = mrb_utf8len(p, end);
|
403
394
|
if (clen > ptr - p) return p;
|
404
395
|
break;
|
405
396
|
}
|
@@ -462,10 +453,10 @@ str_index_str_by_char_search(mrb_state *mrb, const char *p, const char *pend, co
|
|
462
453
|
}
|
463
454
|
|
464
455
|
pivot = p + qstable[(unsigned char)p[slen - 1]];
|
465
|
-
if (pivot
|
456
|
+
if (pivot >= pend || pivot < p /* overflowed */) { return -1; }
|
466
457
|
|
467
458
|
do {
|
468
|
-
p +=
|
459
|
+
p += mrb_utf8len(p, pend);
|
469
460
|
off ++;
|
470
461
|
} while (p < pivot);
|
471
462
|
}
|
@@ -484,7 +475,7 @@ str_index_str_by_char(mrb_state *mrb, mrb_value str, mrb_value sub, mrb_int pos)
|
|
484
475
|
|
485
476
|
for (; pos > 0; pos --) {
|
486
477
|
if (pend - p < 1) { return -1; }
|
487
|
-
p +=
|
478
|
+
p += mrb_utf8len(p, pend);
|
488
479
|
}
|
489
480
|
|
490
481
|
if (slen < 1) { return off; }
|
@@ -503,25 +494,45 @@ str_index_str_by_char(mrb_state *mrb, mrb_value str, mrb_value sub, mrb_int pos)
|
|
503
494
|
#define str_index_str_by_char(mrb, str, sub, pos) str_index_str(mrb, str, sub, pos)
|
504
495
|
#endif
|
505
496
|
|
497
|
+
#ifndef MRB_QS_SHORT_STRING_LENGTH
|
498
|
+
#define MRB_QS_SHORT_STRING_LENGTH 2048
|
499
|
+
#endif
|
500
|
+
|
506
501
|
static inline mrb_int
|
507
502
|
mrb_memsearch_qs(const unsigned char *xs, mrb_int m, const unsigned char *ys, mrb_int n)
|
508
503
|
{
|
509
|
-
|
510
|
-
|
511
|
-
|
512
|
-
ptrdiff_t qstable[256];
|
504
|
+
if (n + m < MRB_QS_SHORT_STRING_LENGTH) {
|
505
|
+
const unsigned char *y = ys;
|
506
|
+
const unsigned char *ye = ys+n-m+1;
|
513
507
|
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
508
|
+
for (;;) {
|
509
|
+
y = (const unsigned char*)memchr(y, xs[0], (size_t)(ye-y));
|
510
|
+
if (y == NULL) return -1;
|
511
|
+
if (memcmp(xs, y, m) == 0) {
|
512
|
+
return (mrb_int)(y - ys);
|
513
|
+
}
|
514
|
+
y++;
|
515
|
+
}
|
516
|
+
return -1;
|
517
|
+
}
|
518
|
+
else {
|
519
|
+
const unsigned char *x = xs, *xe = xs + m;
|
520
|
+
const unsigned char *y = ys;
|
521
|
+
int i;
|
522
|
+
ptrdiff_t qstable[256];
|
523
|
+
|
524
|
+
/* Preprocessing */
|
525
|
+
for (i = 0; i < 256; ++i)
|
526
|
+
qstable[i] = m + 1;
|
527
|
+
for (; x < xe; ++x)
|
528
|
+
qstable[*x] = xe - x;
|
529
|
+
/* Searching */
|
530
|
+
for (; y + m <= ys + n; y += *(qstable + y[m])) {
|
531
|
+
if (*xs == *y && memcmp(xs, y, m) == 0)
|
532
|
+
return (mrb_int)(y - ys);
|
533
|
+
}
|
534
|
+
return -1;
|
523
535
|
}
|
524
|
-
return -1;
|
525
536
|
}
|
526
537
|
|
527
538
|
static mrb_int
|
@@ -562,9 +573,6 @@ str_share(mrb_state *mrb, struct RString *orig, struct RString *s)
|
|
562
573
|
else if (RSTR_FSHARED_P(orig)) {
|
563
574
|
str_init_fshared(orig, s, orig->as.heap.aux.fshared);
|
564
575
|
}
|
565
|
-
else if (mrb_frozen_p(orig) && !RSTR_POOL_P(orig)) {
|
566
|
-
str_init_fshared(orig, s, orig);
|
567
|
-
}
|
568
576
|
else {
|
569
577
|
if (orig->as.heap.aux.capa > orig->as.heap.len) {
|
570
578
|
orig->as.heap.ptr = (char *)mrb_realloc(mrb, orig->as.heap.ptr, len+1);
|
@@ -575,29 +583,6 @@ str_share(mrb_state *mrb, struct RString *orig, struct RString *s)
|
|
575
583
|
}
|
576
584
|
}
|
577
585
|
|
578
|
-
mrb_value
|
579
|
-
mrb_str_pool(mrb_state *mrb, const char *p, mrb_int len, mrb_bool nofree)
|
580
|
-
{
|
581
|
-
struct RString *s = (struct RString *)mrb_malloc(mrb, sizeof(struct RString));
|
582
|
-
|
583
|
-
s->tt = MRB_TT_STRING;
|
584
|
-
s->c = mrb->string_class;
|
585
|
-
s->flags = 0;
|
586
|
-
|
587
|
-
if (RSTR_EMBEDDABLE_P(len)) {
|
588
|
-
str_init_embed(s, p, len);
|
589
|
-
}
|
590
|
-
else if (nofree) {
|
591
|
-
str_init_nofree(s, p, len);
|
592
|
-
}
|
593
|
-
else {
|
594
|
-
str_init_normal(mrb, s, p, len);
|
595
|
-
}
|
596
|
-
RSTR_SET_POOL_FLAG(s);
|
597
|
-
MRB_SET_FROZEN_FLAG(s);
|
598
|
-
return mrb_obj_value(s);
|
599
|
-
}
|
600
|
-
|
601
586
|
mrb_value
|
602
587
|
mrb_str_byte_subseq(mrb_state *mrb, mrb_value str, mrb_int beg, mrb_int len)
|
603
588
|
{
|
@@ -877,7 +862,7 @@ mrb_str_to_cstr(mrb_state *mrb, mrb_value str0)
|
|
877
862
|
MRB_API void
|
878
863
|
mrb_str_concat(mrb_state *mrb, mrb_value self, mrb_value other)
|
879
864
|
{
|
880
|
-
other =
|
865
|
+
other = mrb_obj_as_string(mrb, other);
|
881
866
|
mrb_str_cat_str(mrb, self, other);
|
882
867
|
}
|
883
868
|
|
@@ -1040,10 +1025,9 @@ mrb_str_cmp(mrb_state *mrb, mrb_value str1, mrb_value str2)
|
|
1040
1025
|
static mrb_value
|
1041
1026
|
mrb_str_cmp_m(mrb_state *mrb, mrb_value str1)
|
1042
1027
|
{
|
1043
|
-
mrb_value str2;
|
1028
|
+
mrb_value str2 = mrb_get_arg1(mrb);
|
1044
1029
|
mrb_int result;
|
1045
1030
|
|
1046
|
-
mrb_get_args(mrb, "o", &str2);
|
1047
1031
|
if (!mrb_string_p(str2)) {
|
1048
1032
|
return mrb_nil_value();
|
1049
1033
|
}
|
@@ -1085,37 +1069,17 @@ mrb_str_equal(mrb_state *mrb, mrb_value str1, mrb_value str2)
|
|
1085
1069
|
static mrb_value
|
1086
1070
|
mrb_str_equal_m(mrb_state *mrb, mrb_value str1)
|
1087
1071
|
{
|
1088
|
-
mrb_value str2;
|
1089
|
-
|
1090
|
-
mrb_get_args(mrb, "o", &str2);
|
1072
|
+
mrb_value str2 = mrb_get_arg1(mrb);
|
1091
1073
|
|
1092
1074
|
return mrb_bool_value(mrb_str_equal(mrb, str1, str2));
|
1093
1075
|
}
|
1094
1076
|
/* ---------------------------------- */
|
1095
1077
|
|
1096
|
-
MRB_API mrb_value
|
1097
|
-
mrb_str_to_str(mrb_state *mrb, mrb_value str)
|
1098
|
-
{
|
1099
|
-
switch (mrb_type(str)) {
|
1100
|
-
case MRB_TT_STRING:
|
1101
|
-
return str;
|
1102
|
-
case MRB_TT_SYMBOL:
|
1103
|
-
return mrb_sym_str(mrb, mrb_symbol(str));
|
1104
|
-
case MRB_TT_FIXNUM:
|
1105
|
-
return mrb_fixnum_to_str(mrb, str, 10);
|
1106
|
-
case MRB_TT_CLASS:
|
1107
|
-
case MRB_TT_MODULE:
|
1108
|
-
return mrb_mod_to_s(mrb, str);
|
1109
|
-
default:
|
1110
|
-
return mrb_convert_type(mrb, str, MRB_TT_STRING, "String", "to_s");
|
1111
|
-
}
|
1112
|
-
}
|
1113
|
-
|
1114
1078
|
/* obslete: use RSTRING_PTR() */
|
1115
1079
|
MRB_API const char*
|
1116
1080
|
mrb_string_value_ptr(mrb_state *mrb, mrb_value str)
|
1117
1081
|
{
|
1118
|
-
str =
|
1082
|
+
str = mrb_obj_as_string(mrb, str);
|
1119
1083
|
return RSTRING_PTR(str);
|
1120
1084
|
}
|
1121
1085
|
|
@@ -1161,8 +1125,8 @@ str_convert_range(mrb_state *mrb, mrb_value str, mrb_value indx, mrb_value alen,
|
|
1161
1125
|
}
|
1162
1126
|
else {
|
1163
1127
|
switch (mrb_type(indx)) {
|
1164
|
-
case
|
1165
|
-
*beg =
|
1128
|
+
case MRB_TT_INTEGER:
|
1129
|
+
*beg = mrb_integer(indx);
|
1166
1130
|
*len = 1;
|
1167
1131
|
return STR_CHAR_RANGE;
|
1168
1132
|
|
@@ -1177,8 +1141,8 @@ str_convert_range(mrb_state *mrb, mrb_value str, mrb_value indx, mrb_value alen,
|
|
1177
1141
|
|
1178
1142
|
default:
|
1179
1143
|
indx = mrb_to_int(mrb, indx);
|
1180
|
-
if (
|
1181
|
-
*beg =
|
1144
|
+
if (mrb_integer_p(indx)) {
|
1145
|
+
*beg = mrb_integer(indx);
|
1182
1146
|
*len = 1;
|
1183
1147
|
return STR_CHAR_RANGE;
|
1184
1148
|
}
|
@@ -1193,7 +1157,7 @@ range_arg:
|
|
1193
1157
|
break;
|
1194
1158
|
}
|
1195
1159
|
|
1196
|
-
mrb_raise(mrb, E_TYPE_ERROR, "can't convert to
|
1160
|
+
mrb_raise(mrb, E_TYPE_ERROR, "can't convert to Integer");
|
1197
1161
|
}
|
1198
1162
|
}
|
1199
1163
|
return STR_OUT_OF_RANGE;
|
@@ -1237,8 +1201,8 @@ mrb_str_aref(mrb_state *mrb, mrb_value str, mrb_value indx, mrb_value alen)
|
|
1237
1201
|
* str.slice(range) => new_str or nil
|
1238
1202
|
* str.slice(other_str) => new_str or nil
|
1239
1203
|
*
|
1240
|
-
* Element Reference---If passed a single <code>
|
1241
|
-
* of the character at that position. If passed two <code>
|
1204
|
+
* Element Reference---If passed a single <code>Integer</code>, returns the code
|
1205
|
+
* of the character at that position. If passed two <code>Integer</code>
|
1242
1206
|
* objects, returns a substring starting at the offset given by the first, and
|
1243
1207
|
* a length given by the second. If given a range, a substring containing
|
1244
1208
|
* characters at offsets given by the range is returned. In all three cases, if
|
@@ -1296,7 +1260,7 @@ str_replace_partial(mrb_state *mrb, mrb_value src, mrb_int pos, mrb_int end, mrb
|
|
1296
1260
|
}
|
1297
1261
|
|
1298
1262
|
replen = (mrb_nil_p(rep) ? 0 : RSTRING_LEN(rep));
|
1299
|
-
newlen = replen + len - (end - pos);
|
1263
|
+
newlen = replen + (len - (end - pos));
|
1300
1264
|
|
1301
1265
|
if (newlen >= MRB_SSIZE_MAX || newlen < replen /* overflowed */) {
|
1302
1266
|
mrb_raise(mrb, E_RUNTIME_ERROR, "string size too big");
|
@@ -1341,7 +1305,7 @@ str_escape(mrb_state *mrb, mrb_value str, mrb_bool inspect)
|
|
1341
1305
|
unsigned char c, cc;
|
1342
1306
|
#ifdef MRB_UTF8_STRING
|
1343
1307
|
if (inspect) {
|
1344
|
-
mrb_int clen =
|
1308
|
+
mrb_int clen = mrb_utf8len(p, pend);
|
1345
1309
|
if (clen > 1) {
|
1346
1310
|
mrb_int i;
|
1347
1311
|
|
@@ -1644,7 +1608,7 @@ mrb_str_chop_bang(mrb_state *mrb, mrb_value str)
|
|
1644
1608
|
const char* t = RSTR_PTR(s), *p = t;
|
1645
1609
|
const char* e = p + RSTR_LEN(s);
|
1646
1610
|
while (p<e) {
|
1647
|
-
mrb_int clen =
|
1611
|
+
mrb_int clen = mrb_utf8len(p, e);
|
1648
1612
|
if (p + clen>=e) break;
|
1649
1613
|
p += clen;
|
1650
1614
|
}
|
@@ -1770,10 +1734,9 @@ mrb_str_empty_p(mrb_state *mrb, mrb_value self)
|
|
1770
1734
|
static mrb_value
|
1771
1735
|
mrb_str_eql(mrb_state *mrb, mrb_value self)
|
1772
1736
|
{
|
1773
|
-
mrb_value str2;
|
1737
|
+
mrb_value str2 = mrb_get_arg1(mrb);
|
1774
1738
|
mrb_bool eql_p;
|
1775
1739
|
|
1776
|
-
mrb_get_args(mrb, "o", &str2);
|
1777
1740
|
eql_p = (mrb_string_p(str2)) && str_eql(mrb, self, str2);
|
1778
1741
|
|
1779
1742
|
return mrb_bool_value(eql_p);
|
@@ -1792,13 +1755,17 @@ mrb_str_hash(mrb_state *mrb, mrb_value str)
|
|
1792
1755
|
struct RString *s = mrb_str_ptr(str);
|
1793
1756
|
mrb_int len = RSTR_LEN(s);
|
1794
1757
|
char *p = RSTR_PTR(s);
|
1795
|
-
|
1758
|
+
uint32_t hash = 0;
|
1796
1759
|
|
1797
|
-
|
1798
|
-
|
1799
|
-
|
1760
|
+
for(int i = 0; i < len; ++i) {
|
1761
|
+
hash += p[i];
|
1762
|
+
hash += (hash << 10);
|
1763
|
+
hash ^= (hash >> 6);
|
1800
1764
|
}
|
1801
|
-
|
1765
|
+
hash += (hash << 3);
|
1766
|
+
hash ^= (hash >> 11);
|
1767
|
+
hash += (hash << 15);
|
1768
|
+
return hash;
|
1802
1769
|
}
|
1803
1770
|
|
1804
1771
|
/* 15.2.10.5.20 */
|
@@ -1945,10 +1912,20 @@ mrb_str_intern(mrb_state *mrb, mrb_value self)
|
|
1945
1912
|
MRB_API mrb_value
|
1946
1913
|
mrb_obj_as_string(mrb_state *mrb, mrb_value obj)
|
1947
1914
|
{
|
1948
|
-
|
1915
|
+
switch (mrb_type(obj)) {
|
1916
|
+
case MRB_TT_STRING:
|
1949
1917
|
return obj;
|
1918
|
+
case MRB_TT_SYMBOL:
|
1919
|
+
return mrb_sym_str(mrb, mrb_symbol(obj));
|
1920
|
+
case MRB_TT_INTEGER:
|
1921
|
+
return mrb_fixnum_to_str(mrb, obj, 10);
|
1922
|
+
case MRB_TT_SCLASS:
|
1923
|
+
case MRB_TT_CLASS:
|
1924
|
+
case MRB_TT_MODULE:
|
1925
|
+
return mrb_mod_to_s(mrb, obj);
|
1926
|
+
default:
|
1927
|
+
return mrb_type_convert(mrb, obj, MRB_TT_STRING, MRB_SYM(to_s));
|
1950
1928
|
}
|
1951
|
-
return mrb_str_to_str(mrb, obj);
|
1952
1929
|
}
|
1953
1930
|
|
1954
1931
|
MRB_API mrb_value
|
@@ -2016,7 +1993,7 @@ mrb_str_reverse_bang(mrb_state *mrb, mrb_value str)
|
|
2016
1993
|
p = RSTR_PTR(s);
|
2017
1994
|
e = p + RSTR_LEN(s);
|
2018
1995
|
while (p<e) {
|
2019
|
-
mrb_int clen =
|
1996
|
+
mrb_int clen = mrb_utf8len(p, e);
|
2020
1997
|
str_reverse(p, p + clen - 1);
|
2021
1998
|
p += clen;
|
2022
1999
|
}
|
@@ -2240,13 +2217,13 @@ mrb_str_split_m(mrb_state *mrb, mrb_value str)
|
|
2240
2217
|
}
|
2241
2218
|
|
2242
2219
|
mrb_value
|
2243
|
-
mrb_str_len_to_inum(mrb_state *mrb, const char *str,
|
2220
|
+
mrb_str_len_to_inum(mrb_state *mrb, const char *str, size_t len, mrb_int base, int badcheck)
|
2244
2221
|
{
|
2245
2222
|
const char *p = str;
|
2246
2223
|
const char *pend = str + len;
|
2247
2224
|
char sign = 1;
|
2248
2225
|
int c;
|
2249
|
-
|
2226
|
+
mrb_int n = 0;
|
2250
2227
|
mrb_int val;
|
2251
2228
|
|
2252
2229
|
#define conv_digit(c) \
|
@@ -2373,19 +2350,17 @@ mrb_str_len_to_inum(mrb_state *mrb, const char *str, mrb_int len, mrb_int base,
|
|
2373
2350
|
if (c < 0 || c >= base) {
|
2374
2351
|
break;
|
2375
2352
|
}
|
2376
|
-
n
|
2377
|
-
|
2378
|
-
|
2379
|
-
|
2380
|
-
|
2381
|
-
|
2382
|
-
}
|
2383
|
-
else
|
2384
|
-
#endif
|
2385
|
-
{
|
2386
|
-
mrb_raisef(mrb, E_RANGE_ERROR, "string (%l) too big for integer", str, pend-str);
|
2353
|
+
if (mrb_int_mul_overflow(n, base, &n)) goto overflow;
|
2354
|
+
if (MRB_INT_MAX - c < n) {
|
2355
|
+
if (sign == 0 && MRB_INT_MAX - n == c - 1) {
|
2356
|
+
n = MRB_INT_MIN;
|
2357
|
+
sign = 1;
|
2358
|
+
break;
|
2387
2359
|
}
|
2360
|
+
overflow:
|
2361
|
+
mrb_raisef(mrb, E_RANGE_ERROR, "string (%l) too big for integer", str, pend-str);
|
2388
2362
|
}
|
2363
|
+
n += c;
|
2389
2364
|
}
|
2390
2365
|
val = (mrb_int)n;
|
2391
2366
|
if (badcheck) {
|
@@ -2395,7 +2370,7 @@ mrb_str_len_to_inum(mrb_state *mrb, const char *str, mrb_int len, mrb_int base,
|
|
2395
2370
|
if (p<pend) goto bad; /* trailing garbage */
|
2396
2371
|
}
|
2397
2372
|
|
2398
|
-
return
|
2373
|
+
return mrb_int_value(mrb, sign ? val : -val);
|
2399
2374
|
nullbyte:
|
2400
2375
|
mrb_raise(mrb, E_ARGUMENT_ERROR, "string contains null byte");
|
2401
2376
|
/* not reached */
|
@@ -2487,49 +2462,57 @@ mrb_str_to_i(mrb_state *mrb, mrb_value self)
|
|
2487
2462
|
return mrb_str_to_inum(mrb, self, base, FALSE);
|
2488
2463
|
}
|
2489
2464
|
|
2490
|
-
#ifndef
|
2465
|
+
#ifndef MRB_NO_FLOAT
|
2491
2466
|
double
|
2492
2467
|
mrb_str_len_to_dbl(mrb_state *mrb, const char *s, size_t len, mrb_bool badcheck)
|
2493
2468
|
{
|
2494
|
-
char buf[DBL_DIG * 4 +
|
2495
|
-
const char *p = s;
|
2469
|
+
char buf[DBL_DIG * 4 + 20];
|
2470
|
+
const char *p = s, *p2;
|
2496
2471
|
const char *pend = p + len;
|
2497
2472
|
char *end;
|
2498
2473
|
char *n;
|
2499
2474
|
char prev = 0;
|
2500
2475
|
double d;
|
2476
|
+
mrb_bool dot = FALSE;
|
2501
2477
|
|
2502
2478
|
if (!p) return 0.0;
|
2503
|
-
while (ISSPACE(*p)) p++;
|
2479
|
+
while (p<pend && ISSPACE(*p)) p++;
|
2480
|
+
p2 = p;
|
2504
2481
|
|
2505
2482
|
if (pend - p > 2 && p[0] == '0' && (p[1] == 'x' || p[1] == 'X')) {
|
2506
2483
|
mrb_value x;
|
2507
2484
|
|
2508
2485
|
if (!badcheck) return 0.0;
|
2509
2486
|
x = mrb_str_len_to_inum(mrb, p, pend-p, 0, badcheck);
|
2510
|
-
if (
|
2511
|
-
d = (double)
|
2487
|
+
if (mrb_integer_p(x))
|
2488
|
+
d = (double)mrb_integer(x);
|
2512
2489
|
else /* if (mrb_float_p(x)) */
|
2513
2490
|
d = mrb_float(x);
|
2514
2491
|
return d;
|
2515
2492
|
}
|
2516
2493
|
while (p < pend) {
|
2517
2494
|
if (!*p) {
|
2518
|
-
if (badcheck
|
2495
|
+
if (badcheck) {
|
2519
2496
|
mrb_raise(mrb, E_ARGUMENT_ERROR, "string for Float contains null byte");
|
2520
2497
|
/* not reached */
|
2521
2498
|
}
|
2522
2499
|
pend = p;
|
2523
|
-
p =
|
2500
|
+
p = p2;
|
2501
|
+
goto nocopy;
|
2502
|
+
}
|
2503
|
+
if (!badcheck && *p == ' ') {
|
2504
|
+
pend = p;
|
2505
|
+
p = p2;
|
2524
2506
|
goto nocopy;
|
2525
2507
|
}
|
2526
2508
|
if (*p == '_') break;
|
2527
2509
|
p++;
|
2528
2510
|
}
|
2529
|
-
p =
|
2511
|
+
p = p2;
|
2530
2512
|
n = buf;
|
2531
2513
|
while (p < pend) {
|
2532
2514
|
char c = *p++;
|
2515
|
+
if (c == '.') dot = TRUE;
|
2533
2516
|
if (c == '_') {
|
2534
2517
|
/* remove an underscore between digits */
|
2535
2518
|
if (n == buf || !ISDIGIT(prev) || p == pend) {
|
@@ -2539,6 +2522,11 @@ mrb_str_len_to_dbl(mrb_state *mrb, const char *s, size_t len, mrb_bool badcheck)
|
|
2539
2522
|
}
|
2540
2523
|
else if (badcheck && prev == '_' && !ISDIGIT(c)) goto bad;
|
2541
2524
|
else {
|
2525
|
+
const char *bend = buf+sizeof(buf)-1;
|
2526
|
+
if (n==bend) { /* buffer overflow */
|
2527
|
+
if (dot) break; /* cut off remaining fractions */
|
2528
|
+
return INFINITY;
|
2529
|
+
}
|
2542
2530
|
*n++ = c;
|
2543
2531
|
}
|
2544
2532
|
prev = c;
|
@@ -2725,7 +2713,7 @@ mrb_str_cat(mrb_state *mrb, mrb_value str, const char *ptr, size_t len)
|
|
2725
2713
|
MRB_API mrb_value
|
2726
2714
|
mrb_str_cat_cstr(mrb_state *mrb, mrb_value str, const char *ptr)
|
2727
2715
|
{
|
2728
|
-
return mrb_str_cat(mrb, str, ptr, strlen(ptr));
|
2716
|
+
return mrb_str_cat(mrb, str, ptr, ptr ? strlen(ptr) : 0);
|
2729
2717
|
}
|
2730
2718
|
|
2731
2719
|
MRB_API mrb_value
|
@@ -2855,25 +2843,32 @@ mrb_str_setbyte(mrb_state *mrb, mrb_value str)
|
|
2855
2843
|
static mrb_value
|
2856
2844
|
mrb_str_byteslice(mrb_state *mrb, mrb_value str)
|
2857
2845
|
{
|
2858
|
-
mrb_value a1
|
2846
|
+
mrb_value a1;
|
2859
2847
|
mrb_int str_len = RSTRING_LEN(str), beg, len;
|
2860
2848
|
mrb_bool empty = TRUE;
|
2861
2849
|
|
2862
|
-
|
2863
|
-
|
2864
|
-
|
2865
|
-
|
2866
|
-
|
2867
|
-
|
2868
|
-
|
2850
|
+
len = mrb_get_argc(mrb);
|
2851
|
+
switch (len) {
|
2852
|
+
case 2:
|
2853
|
+
mrb_get_args(mrb, "ii", &beg, &len);
|
2854
|
+
break;
|
2855
|
+
case 1:
|
2856
|
+
a1 = mrb_get_arg1(mrb);
|
2857
|
+
if (mrb_range_p(a1)) {
|
2858
|
+
if (mrb_range_beg_len(mrb, a1, &beg, &len, str_len, TRUE) != MRB_RANGE_OK) {
|
2859
|
+
return mrb_nil_value();
|
2860
|
+
}
|
2869
2861
|
}
|
2862
|
+
else {
|
2863
|
+
beg = mrb_integer(mrb_to_int(mrb, a1));
|
2864
|
+
len = 1;
|
2865
|
+
empty = FALSE;
|
2866
|
+
}
|
2867
|
+
break;
|
2868
|
+
default:
|
2869
|
+
mrb_argnum_error(mrb, len, 1, 2);
|
2870
|
+
break;
|
2870
2871
|
}
|
2871
|
-
else {
|
2872
|
-
beg = mrb_fixnum(mrb_to_int(mrb, a1));
|
2873
|
-
len = 1;
|
2874
|
-
empty = FALSE;
|
2875
|
-
}
|
2876
|
-
|
2877
2872
|
if (mrb_str_beg_len(str_len, &beg, &len) && (empty || len != 0)) {
|
2878
2873
|
return mrb_str_byte_subseq(mrb, str, beg, len);
|
2879
2874
|
}
|
@@ -2928,7 +2923,7 @@ mrb_init_string(mrb_state *mrb)
|
|
2928
2923
|
mrb_define_method(mrb, s, "slice", mrb_str_aref_m, MRB_ARGS_ANY()); /* 15.2.10.5.34 */
|
2929
2924
|
mrb_define_method(mrb, s, "split", mrb_str_split_m, MRB_ARGS_ANY()); /* 15.2.10.5.35 */
|
2930
2925
|
|
2931
|
-
#ifndef
|
2926
|
+
#ifndef MRB_NO_FLOAT
|
2932
2927
|
mrb_define_method(mrb, s, "to_f", mrb_str_to_f, MRB_ARGS_NONE()); /* 15.2.10.5.38 */
|
2933
2928
|
#endif
|
2934
2929
|
mrb_define_method(mrb, s, "to_i", mrb_str_to_i, MRB_ARGS_ANY()); /* 15.2.10.5.39 */
|
@@ -2945,7 +2940,7 @@ mrb_init_string(mrb_state *mrb)
|
|
2945
2940
|
mrb_define_method(mrb, s, "byteslice", mrb_str_byteslice, MRB_ARGS_ARG(1,1));
|
2946
2941
|
}
|
2947
2942
|
|
2948
|
-
#ifndef
|
2943
|
+
#ifndef MRB_NO_FLOAT
|
2949
2944
|
/*
|
2950
2945
|
* Source code for the "strtod" library procedure.
|
2951
2946
|
*
|
@@ -3007,7 +3002,7 @@ mrb_float_read(const char *string, char **endPtr)
|
|
3007
3002
|
int c;
|
3008
3003
|
int exp = 0; /* Exponent read from "EX" field. */
|
3009
3004
|
int fracExp = 0; /* Exponent that derives from the fractional
|
3010
|
-
* part. Under normal
|
3005
|
+
* part. Under normal circumstances, it is
|
3011
3006
|
* the negative of the number of digits in F.
|
3012
3007
|
* However, if I is very long, the last digits
|
3013
3008
|
* of I get dropped (otherwise a long I with a
|