script_core 0.2.3 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|