• Philipp Stephani's avatar
    Module assertions: check for garbage collections · b7dab24b
    Philipp Stephani authored
    It's technically possible to write a user pointer finalizer that calls
    into Emacs module functions.  This would be disastrous because it
    would allow arbitrary Lisp code to run during garbage collection.
    Therefore extend the module assertions to check for this case.
    
    * src/emacs-module.c (module_assert_thread): Also check whether a
    garbage collection is in progress.
    
    * test/data/emacs-module/mod-test.c (invalid_finalizer)
    (Fmod_test_invalid_finalizer): New test module functions.
    (emacs_module_init): Register new test function.
    
    * test/src/emacs-module-tests.el (module--test-assertion)
    (module--with-temp-directory): New helper macros.
    (module--test-assertions--load-non-live-object): Rename existing
    unit test, use helper macros.
    (module--test-assertions--call-emacs-from-gc): New unit test.
    b7dab24b
mod-test.c 9.68 KB