Skip to content
  • dearblue's avatar
    8ecfacef
    Prohibit `Class#allocate` in a different way · 8ecfacef
    dearblue authored
    The method introduced by #5979 causes a fault by swapping classes.
    
    ```console
    % bin/mruby -e 'Method = Proc; p Object.method(:inspect)'
    zsh: segmentation fault (core dumped)  bin/mruby -e 'Method = Proc; p Object.method(:inspect)'
    ```
    
    After applying this patch, a `TypeError` exception will be raised.
    
    ```console
    % bin/mruby -e 'Method = Proc; p Object.method(:inspect)'
    trace (most recent call last):
            [1] -e:1
    -e:1:in method: allocation failure of Proc (TypeError)
    ```
    
    However, if the `mrb_vtype` is the same object, the same care must still be taken as before.
    
    ```console
    % bin/mruby -e 'Method = Binding; p method(:puts).eval("12345")'
    trace (most recent call last):
            [1] -e:1
    -e:1:in eval: wrong argument type nil (expected Proc) (TypeError)
    ```
    8ecfacef
    Prohibit `Class#allocate` in a different way
    dearblue authored
    The method introduced by #5979 causes a fault by swapping classes.
    
    ```console
    % bin/mruby -e 'Method = Proc; p Object.method(:inspect)'
    zsh: segmentation fault (core dumped)  bin/mruby -e 'Method = Proc; p Object.method(:inspect)'
    ```
    
    After applying this patch, a `TypeError` exception will be raised.
    
    ```console
    % bin/mruby -e 'Method = Proc; p Object.method(:inspect)'
    trace (most recent call last):
            [1] -e:1
    -e:1:in method: allocation failure of Proc (TypeError)
    ```
    
    However, if the `mrb_vtype` is the same object, the same care must still be taken as before.
    
    ```console
    % bin/mruby -e 'Method = Binding; p method(:puts).eval("12345")'
    trace (most recent call last):
            [1] -e:1
    -e:1:in eval: wrong argument type nil (expected Proc) (TypeError)
    ```
Loading