For now, had to patch in several places to avoid search_wid crash:
--- D:\SlickEdit Pro 24.0.0 Beta4\macros\tbfind_orig.e 2019-09-21 14:12:38.000000000 +0300
+++ D:\SlickEdit Pro 24.0.0 Beta4\macros\tbfind.e 2019-09-21 14:15:14.000000000 +0300
@@ -788,11 +788,14 @@
_replace_btn.p_enabled = false;
_replaceall_btn.p_enabled = false;
_replacepreview_btn.p_enabled = false;
}
} else {
- _str bufname = search_wid.p_buf_name;
+ _str bufname = "";
+ if (!_iswindow_valid(search_wid)) {
+ bufname = search_wid.p_buf_name;
+ }
if (mode == VSSEARCHMODE_FIND || mode == VSSEARCHMODE_REPLACE) {
if (_findbuffer.p_text == SEARCH_IN_ALL_BUFFERS ||
_findbuffer.p_text == SEARCH_IN_ALL_ECL_BUFFERS) {
int child_windows = _mdi._no_child_windows();
_find_btn.p_enabled = (child_windows == 0);
@@ -823,11 +826,14 @@
_findmark_all.p_enabled = false;
_findbookmark_all.p_enabled = false;
_findmc.p_enabled = false;
_findinc.p_enabled = false;
} else {
- _str bufname = search_wid.p_buf_name;
+ _str bufname = "";
+ if (!_iswindow_valid(search_wid)) {
+ bufname = search_wid.p_buf_name;
+ }
if (_isGrepBuffer(bufname)) {
_findlist_all.p_enabled = false;
_findmark_all.p_enabled = false;
_replacelist.p_enabled = false;
} else {
@@ -838,11 +844,15 @@
if ((bufname :== '') || _isGrepBuffer(bufname) || (bufname == '.process') || _isDSBuffer(bufname) || (search_wid.p_buf_flags & VSBUFFLAG_HIDDEN)) {
_findbookmark_all.p_enabled = false;
} else {
_findbookmark_all.p_enabled = true;
}
- _findinc.p_enabled = (search_wid.p_buf_size <= def_gui_find_incremental_search_max_buf_ksize*1024);
+ int buf_size = 0;
+ if (!_iswindow_valid(search_wid)) {
+ buf_size = search_wid.p_buf_size;
+ }
+ _findinc.p_enabled = (buf_size <= def_gui_find_incremental_search_max_buf_ksize*1024);
}
if (mode == VSSEARCHMODE_FIND) {
switch (_findbuffer.p_text) {
case SEARCH_IN_CURRENT_BUFFER:
@@ -1275,11 +1285,15 @@
_mfhook.call_event(CHANGE_SELECTED, (mode == VSSEARCHMODE_FINDINFILES), _mfhook, LBUTTON_UP, '');
_findstring._show_textbox_error_color(false);
ignore_change = old_ignore_change;
// show warning message
- if ((mode == VSSEARCHMODE_FIND) && (search_wid != 0) && (search_wid.p_buf_size > def_gui_find_incremental_search_max_buf_ksize*1024)) {
+ int buf_size = 0;
+ if ((search_wid < 1) || !_iswindow_valid(search_wid)) {
+ buf_size = search_wid.p_buf_size;
+ }
+ if ((mode == VSSEARCHMODE_FIND) && (search_wid != 0) && (buf_size > def_gui_find_incremental_search_max_buf_ksize*1024)) {
message('Incremental search disabled: File too large');
}
}
static void _init_options(int flags)