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:
John Mark Bell 2006-04-26 17:26:03 +00:00
parent fba9652abb
commit 37cb487fc0
2 changed files with 11 additions and 7 deletions

View File

@ -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);

View File

@ -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;