Commit Graph

12769 Commits

Author SHA1 Message Date
Yukihiro "Matz" Matsumoto dc88a87f9b time.c: time_t may be unsigned on some platforms. 2021-04-23 07:53:17 +09:00
Yukihiro "Matz" Matsumoto 1a82bab1b0 error.h: rename mrb_protect_raw to mrb_protect_error; #5415
- `_raw` does not describe the nature of the function
- the function protect errors during C function execution
2021-04-22 17:01:33 +09:00
Yukihiro "Matz" Matsumoto 91c4ac8d66 numeric.c: update error messages in int_pow; ref #5420 2021-04-21 22:08:07 +09:00
Yukihiro "Matz" Matsumoto 5cf1de5b31 numeric.c: fix int_pow to detect integer overflow; fix #5420 2021-04-21 22:05:52 +09:00
Yukihiro "Matz" Matsumoto 2268405fe6 test/math.rb: 10**30 could cause integer overflow; ref #5420 2021-04-21 22:04:20 +09:00
Yukihiro "Matz" Matsumoto bf11f87599 Merge pull request #5419 from shuujii/remove-unused-struct-in-include-mruby-variable.h
Remove unused struct in `include/mruby/variable.h`
2021-04-20 17:41:26 +09:00
Yukihiro "Matz" Matsumoto bd66115257 Merge pull request #5418 from shuujii/remove-unused--include-in-complex.c-and-rational.c
Remove unused `#include` in `complex.c` and `rational.c`
2021-04-20 17:41:01 +09:00
Yukihiro "Matz" Matsumoto ca744e77c4 Merge pull request #5417 from shuujii/remove-MRB_API-from-mrb_get_backtrace-definition
Remove `MRB_API` from `mrb_get_backtrace` definition
2021-04-20 17:40:33 +09:00
KOBAYASHI Shuji 903fbd767a Remove unused struct in include/mruby/variable.h 2021-04-20 16:53:11 +09:00
KOBAYASHI Shuji c6911c54e5 Remove unused #include in complex.c and rational.c 2021-04-20 16:42:40 +09:00
KOBAYASHI Shuji 0d8b025d9b Remove MRB_API from mrb_get_backtrace definition 2021-04-20 16:07:48 +09:00
Yukihiro "Matz" Matsumoto ff366b65eb Merge pull request #5415 from dearblue/unwind-mrb_protect
Introducing the `mrb_protect_raw()` API function
2021-04-19 22:34:20 +09:00
dearblue 891e852286 Introducing the mrb_protect_raw() API function
The purpose is two-fold:

 1. to be able to specify a pointer directly when user data is used

    When using `mrb_protect()`, it is necessary to allocate objects by `mrb_obj_cptr()` function when using user data.

    Adding `mrb_protect_raw()` will make it simpler to reimplement `mrbgems/mruby-error`.

 2. to correctly unwind callinfo when an exception is raised from a C function defined as a method (the main topic)

    If a method call is made directly under `mrb_protect()` and a C function is called, control is returned from `mrb_protect()` if an exception occurs there.
    In this case, callinfo is not restored, so it is out of sync.
    Moreover, returning to mruby VM (`mrb_vm_exec()` function) in this state will indicate `ci->pc` of C function which is equal to `NULL`, and subsequent `JUMP` will cause `SIGSEGV`.

    Following is an example that actually causes `SIGSEGV`:

    - `crash.c`

      ```c
      #include <mruby.h>
      #include <mruby/compile.h>
      #include <mruby/error.h>

      static mrb_value
      level1_body(mrb_state *mrb, mrb_value self)
      {
        return mrb_funcall(mrb, self, "level2", 0);
      }

      static mrb_value
      level1(mrb_state *mrb, mrb_value self)
      {
        return mrb_protect(mrb, level1_body, self, NULL);
      }

      static mrb_value
      level2(mrb_state *mrb, mrb_value self)
      {
        mrb_raise(mrb, E_RUNTIME_ERROR, "error!");
        return mrb_nil_value();
      }

      int
      main(int argc, char *argv[])
      {
        mrb_state *mrb = mrb_open();
        mrb_define_method(mrb, mrb->object_class, "level1", level1, MRB_ARGS_NONE());
        mrb_define_method(mrb, mrb->object_class, "level2", level2, MRB_ARGS_NONE());
        mrb_p(mrb, mrb_load_string(mrb, "p level1"));
        mrb_close(mrb);
        return 0;
      }
      ```

    - compile & run

      ```console
      % `bin/mruby-config --cc --cflags --ldflags` crash.c `bin/mruby-config --libs`

      % ./a.out
      zsh: segmentation fault (core dumped)  ./a.out
      ```

    After applying this patch, it will print exception object and exit normally.

The `mrb_protect()`, `mrb_ensure()` and `mrb_rescue_exceptions()` in `mrbgems/mruby-error` have been rewritten using `mrb_protect_raw()`.
2021-04-19 22:11:57 +09:00
Yukihiro "Matz" Matsumoto 9d362f2c27 backtrace.c: remove MRB_API from internal functions.
- `mrb_exc_backtrace` to implement `Exception#backtrace`
- `mrb_get_backtrace` to implement `#caller`
2021-04-19 15:49:51 +09:00
Yukihiro "Matz" Matsumoto 13eba43100 backtrace.c: small refactoring in mrb_exc_backtrace(); ref #5394
- add comment for unpacking
- avoid saving the symbol in a local variable
2021-04-19 15:49:51 +09:00
Yukihiro "Matz" Matsumoto 2275e76262 backtrace.c: pedantic check for empty backtrace; ref #5394 2021-04-19 15:49:50 +09:00
Yukihiro "Matz" Matsumoto 85808e50b0 backtrace.c: should skip first (innermost) frame w/out position; #5394
Otherwise we suffer `(unknown):0:` errors.
2021-04-19 15:49:50 +09:00
Yukihiro "Matz" Matsumoto 049ec9056e time.c: add integer boundary check for year.
On configurations where `sizeof(mrb_int) > sizeof(int)`.
2021-04-19 15:49:50 +09:00
Yukihiro "Matz" Matsumoto 713fb53bbf Merge pull request #5414 from shuujii/mRubyPresym-no-longer-needs-RakeDSL
`MRuby::Presym` no longer needs `Rake::DSL`
2021-04-18 08:24:15 +09:00
Yukihiro "Matz" Matsumoto 737254588b array.rb: add Array#intersect? from Ruby3.0.1. 2021-04-17 17:38:44 +09:00
KOBAYASHI Shuji f0318aca23 MRuby::Presym no longer needs Rake::DSL 2021-04-17 16:42:08 +09:00
John Bampton 9d32d440eb feat(CI): add the GitHub Super Linter
The GitHub Super Linter is a more robust and better supported
tool than the current GitHub Actions we are using.

Running these checks:

ERROR_ON_MISSING_EXEC_BIT: true
VALIDATE_BASH: true
VALIDATE_BASH_EXEC: true
VALIDATE_EDITORCONFIG: true
VALIDATE_MARKDOWN: true
VALIDATE_SHELL_SHFMT: true
VALIDATE_YAML: true

https://github.com/marketplace/actions/super-linter
https://github.com/github/super-linter

Added the GitHub Super Linter badge to the README.

Also updated the pre-commit framework and added
more documentation on pre-commit.

Added one more pre-commit check: check-executables-have-shebangs

Added one extra check for merge conflicts to our
GitHub Actions.

EditorConfig and Markdown linting.

Minor grammar and spelling fixes.

Update linter.yml
2021-04-16 16:37:52 +09:00
Yukihiro "Matz" Matsumoto ac9038121b Merge pull request #5413 from shuujii/fix-enable_debug_info-in-mrbgems-mruby-proc-ext-test-proc.rb
Fix `enable_debug_info?` in `mrbgems/mruby-proc-ext/test/proc.rb`
2021-04-15 16:55:43 +09:00
KOBAYASHI Shuji 35b2798a5d Fix enable_debug_info? in mrbgems/mruby-proc-ext/test/proc.rb 2021-04-15 15:49:23 +09:00
Yukihiro "Matz" Matsumoto 3c5467af63 Merge pull request #5411 from artichoke/mrb_protect_atexit_prototype_mismatch
Fix incorrect prototype on declaration of mrb_protect_atexit
2021-04-14 07:27:12 +09:00
Yukihiro "Matz" Matsumoto 5a8f0bdaf2 Merge pull request #5410 from mruby/dependabot/github_actions/actions/cache-v2.1.5
build(deps): bump actions/cache from v2.1.4 to v2.1.5
2021-04-14 07:25:07 +09:00
Ryan Lopopolo 7fe6f3976e Fix incorrect prototype on declaration of mrb_protect_atexit
`state.c` makes a prototype declaration for the private
`mrb_protect_atexit` which is defined in `error.c`. `error.c` defines
this function with a void return type, but `state.c` defines the
prototype with an `int` return type.

This mismatch prevents mruby from compiling on stricter compilers like
emscripten.
2021-04-13 07:57:09 -07:00
dependabot[bot] 99bd84e76b build(deps): bump actions/cache from v2.1.4 to v2.1.5
Bumps [actions/cache](https://github.com/actions/cache) from v2.1.4 to v2.1.5.
- [Release notes](https://github.com/actions/cache/releases)
- [Commits](https://github.com/actions/cache/compare/v2.1.4...1a9e2138d905efd099035b49d8b7a3888c653ca8)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-13 07:16:35 +00:00
Yukihiro "Matz" Matsumoto 1a3846b492 mrbgem.rake: avoid implicit receivers in mrbgem.rake. 2021-04-13 07:35:39 +09:00
Yukihiro "Matz" Matsumoto dd89a618b3 mruby-io: fix IO#ungetbyte; ref #5389
- remove `Integer#chr` (thus `mruby-sting-ext`) dependency
- fix the behavior when `c.is_a? String`
- fix the behavior when `c > 255`
2021-04-13 07:24:56 +09:00
Yukihiro "Matz" Matsumoto 9a9c842cb0 Rakefile: remove GitLab configuration; close #5409
This CI could consume too much CPU time on GitLab. Maybe we should add
resource concious CI configuration on GitLab.
2021-04-13 07:16:21 +09:00
Yukihiro "Matz" Matsumoto 475fc6ed26 AUTHORS: update authors information as of 2021-04-12. 2021-04-12 19:04:57 +09:00
Yukihiro "Matz" Matsumoto ff2ffe3b07 proc.h: add type cast to silence warning; ref #5402 2021-04-12 15:21:54 +09:00
Yukihiro "Matz" Matsumoto 2cb9a0653a Merge branch 'io_getbyte' close #5389 2021-04-10 19:08:51 +09:00
Yukihiro "Matz" Matsumoto 5cac9c8478 io.rb: fix IO#getbyte to work with UTF-8 characters; ref #5389 2021-04-10 19:08:15 +09:00
Yukihiro "Matz" Matsumoto 8fa1ff9a03 io.rb: add IO#readbyte; ref #5389 2021-04-10 19:08:15 +09:00
Yukihiro "Matz" Matsumoto 167e0b3f4f io.c: add assertions to mrb_io_bufread(); ref #5389 2021-04-10 19:08:14 +09:00
Yukihiro "Matz" Matsumoto 5342b5cfef io.rb: @buf should be empty on EOF; #4983, #5389 2021-04-10 19:08:14 +09:00
take-cheeze bf455fd582 Add IO#getbyte 2021-04-10 19:08:14 +09:00
Yukihiro "Matz" Matsumoto 44d5e214cc Rename some internal functions; ref #5401 2021-04-10 17:33:50 +09:00
Yukihiro "Matz" Matsumoto f7493b73cb Merge pull request #5400 from jbampton/fix-spelling
chore: fix spelling
2021-04-09 22:07:50 +09:00
Yukihiro "Matz" Matsumoto c2c37e1451 Merge pull request #5401 from dearblue/mcall
Reorganize `mcall()` in `mruby-method`
2021-04-09 21:46:09 +09:00
Yukihiro "Matz" Matsumoto 6d3c022749 mruby-config.bat: update as the shell version. [ci skip] 2021-04-08 07:32:35 +09:00
Yukihiro "Matz" Matsumoto cbe061c2f4 codeql-analysis.yml: remove git checkout HEAD^2.
According to CodeQL instruction, `HEAD^2` is no longer needed.
2021-04-08 07:32:34 +09:00
Yukihiro "Matz" Matsumoto 77405e11b6 Merge pull request #5407 from mruby/dependabot/github_actions/actions/upload-artifact-v2.2.3
build(deps): bump actions/upload-artifact from v2.2.2 to v2.2.3
2021-04-07 16:22:08 +09:00
dependabot[bot] 2544e7f0d1 build(deps): bump actions/upload-artifact from v2.2.2 to v2.2.3
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from v2.2.2 to v2.2.3.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v2.2.2...ee69f02b3dfdecd58bb31b4d133da38ba6fe3700)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-07 07:12:15 +00:00
Yukihiro "Matz" Matsumoto fa2ad34792 Removing trailing white spaces; ref #5406 [ci skip] 2021-04-07 11:02:47 +09:00
Yukihiro "Matz" Matsumoto 32ae96af1f Merge pull request #5406 from sizious/dreamcast-shelf-build-config-update
Updating dreamcast_shelf build configuration.
2021-04-07 11:00:51 +09:00
SiZiOUS 03f7e88ee9 dreamcast_shelf: typo fix. 2021-04-06 20:49:03 +02:00
SiZiOUS 7ad2827900 Updating dreamcast_shelf build configuration. 2021-04-06 17:30:02 +02:00