mirror of
https://github.com/netsurf-browser/netsurf
synced 2025-02-17 06:54:42 +03:00
Fix crash when saving a selection after its containing window's content
has changed. svn path=/trunk/netsurf/; revision=2557
This commit is contained in:
parent
fba9652abb
commit
37cb487fc0
@ -372,7 +372,7 @@ bool selected_part(struct box *box, unsigned start_idx, unsigned end_idx,
|
||||
if (box_length > 0) {
|
||||
if (box->byte_offset >= start_idx &&
|
||||
box->byte_offset + box_length <= end_idx) {
|
||||
|
||||
|
||||
/* fully enclosed */
|
||||
*start_offset = 0;
|
||||
*end_offset = box_length;
|
||||
@ -383,18 +383,18 @@ bool selected_part(struct box *box, unsigned start_idx, unsigned end_idx,
|
||||
/* partly enclosed */
|
||||
int offset = 0;
|
||||
int len;
|
||||
|
||||
|
||||
if (box->byte_offset < start_idx)
|
||||
offset = start_idx - box->byte_offset;
|
||||
|
||||
|
||||
len = box_length - offset;
|
||||
|
||||
|
||||
if (box->byte_offset + box_length > end_idx)
|
||||
len = end_idx - (box->byte_offset + offset);
|
||||
|
||||
|
||||
*start_offset = offset;
|
||||
*end_offset = offset + len;
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -870,6 +870,9 @@ bool selection_save_text(struct selection *s, const char *path)
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!sv.block)
|
||||
return false;
|
||||
|
||||
ret = utf8_to_local_encoding(sv.block, sv.length, &result);
|
||||
free(sv.block);
|
||||
|
||||
|
@ -692,7 +692,8 @@ bool ro_gui_save_content(struct content *c, char *path)
|
||||
break;
|
||||
|
||||
case GUI_SAVE_TEXT_SELECTION:
|
||||
selection_save_text(gui_save_selection, path);
|
||||
if (!selection_save_text(gui_save_selection, path))
|
||||
return false;
|
||||
xosfile_set_type(path, 0xfff);
|
||||
break;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user