soulengine icon indicating copy to clipboard operation
soulengine copied to clipboard

bug с c('chromiumN')->free();

Open vGhost2000 opened this issue 11 years ago • 4 comments

файл uPHPMod.pas: процедура TphpMOD._ChromiumFunctions1Execute - в uPHPMod.dfm называется chromium_free, но по коду таковой не является. В итоге c('chromiumN')->free(); не приводит абсолютно не к чему.

  1. в uPHPMod.dfm переименовать chromium_free во что нибудь более смыслу соответствующее ну там не знаю например chromium_exec2

  2. в core/main/web.php удалить строки:

    public function free(){
        chromium_free($this->self);
    }

тогда будет срабатывать родительский метод и c('chromiumN')->free(); будет отрабатывать как задумано.

vGhost2000 avatar Jul 14 '13 15:07 vGhost2000

Не нужно ее переименовывать в chromium_exec2, она должно уничтожать объект хромиума. Из-за бага PHP4Delphi иногда после удаления функции-объекта, происходит смещение событий, приводя к таким вот досадным багам.

dim-s avatar Jul 15 '13 05:07 dim-s

А зачем там отдельная процедура для уничтожения объекта хромиума, когда стандартная TObject::free() -> gui_destroy(...) из родительского класса с этой задачей отлично справляется?

vGhost2000 avatar Jul 15 '13 16:07 vGhost2000

Не помню почему, был какой-то глюк, по-идее должен работать и gui_destroy.

dim-s avatar Jul 16 '13 06:07 dim-s

Не помню почему, был какой-то глюк, по-идее должен работать и gui_destroy.

Может потому, что TChromium - интерфейсный объект, создающийся на стороне библиотеки? Anyway there's only one reason for that: use chromium_free + gui_safedestroy after.

ghost avatar Feb 02 '19 15:02 ghost