Backport fix for infinite loops to branch.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/branches/BRANCH_2_0_X@39531 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Richard Heck 2011-08-26 23:12:42 +00:00
parent fa4a4380ea
commit fed247aa1c
2 changed files with 32 additions and 7 deletions

View File

@ -438,6 +438,7 @@ def convert_ltcaption(document):
j = find_end_of_inset(document.body, i + 1) j = find_end_of_inset(document.body, i + 1)
if j == -1: if j == -1:
document.warning("Malformed LyX document: Could not find end of tabular.") document.warning("Malformed LyX document: Could not find end of tabular.")
i += 1
continue continue
nrows = int(document.body[i+1].split('"')[3]) nrows = int(document.body[i+1].split('"')[3])
@ -529,6 +530,7 @@ def convert_tablines(document):
j = find_end_of_inset(document.body, i + 1) j = find_end_of_inset(document.body, i + 1)
if j == -1: if j == -1:
document.warning("Malformed LyX document: Could not find end of tabular.") document.warning("Malformed LyX document: Could not find end of tabular.")
i += 1
continue continue
m = i + 1 m = i + 1
@ -668,6 +670,7 @@ def fix_wrong_tables(document):
j = find_end_of_inset(document.body, i + 1) j = find_end_of_inset(document.body, i + 1)
if j == -1: if j == -1:
document.warning("Malformed LyX document: Could not find end of tabular.") document.warning("Malformed LyX document: Could not find end of tabular.")
i += 1
continue continue
m = i + 1 m = i + 1
@ -970,6 +973,8 @@ def remove_inzip_options(document):
if j == -1: if j == -1:
# should not happen # should not happen
document.warning("Malformed LyX document: Could not find end of graphics inset.") document.warning("Malformed LyX document: Could not find end of graphics inset.")
i += 1
continue
# If there's a inzip param, just remove that # If there's a inzip param, just remove that
k = find_token(document.body, "\tinzipName", i + 1, j) k = find_token(document.body, "\tinzipName", i + 1, j)
if k != -1: if k != -1:
@ -1258,6 +1263,8 @@ def revert_inset_info(document):
if j == -1: if j == -1:
# should not happen # should not happen
document.warning("Malformed LyX document: Could not find end of Info inset.") document.warning("Malformed LyX document: Could not find end of Info inset.")
i += 1
continue
type = 'unknown' type = 'unknown'
arg = '' arg = ''
for k in range(i, j+1): for k in range(i, j+1):
@ -1815,19 +1822,24 @@ def revert_framed_notes(document):
if j == -1: if j == -1:
# should not happen # should not happen
document.warning("Malformed LyX document: Could not find end of Box inset.") document.warning("Malformed LyX document: Could not find end of Box inset.")
i += 1
continue
k = find_token(document.body, "status", i + 1, j) k = find_token(document.body, "status", i + 1, j)
if k == -1: if k == -1:
document.warning("Malformed LyX document: Missing `status' tag in Box inset.") document.warning("Malformed LyX document: Missing `status' tag in Box inset.")
return i = j
continue
status = document.body[k] status = document.body[k]
l = find_default_layout(document, i + 1, j) l = find_default_layout(document, i + 1, j)
if l == -1: if l == -1:
document.warning("Malformed LyX document: Missing `\\begin_layout' in Box inset.") document.warning("Malformed LyX document: Missing `\\begin_layout' in Box inset.")
return i = j
continue
m = find_token(document.body, "\\end_layout", i + 1, j) m = find_token(document.body, "\\end_layout", i + 1, j)
if m == -1: if m == -1:
document.warning("Malformed LyX document: Missing `\\end_layout' in Box inset.") document.warning("Malformed LyX document: Missing `\\end_layout' in Box inset.")
return i = j
continue
ibox = find_token(document.body, "has_inner_box 1", i + 1, k) ibox = find_token(document.body, "has_inner_box 1", i + 1, k)
pbox = find_token(document.body, "use_parbox 1", i + 1, k) pbox = find_token(document.body, "use_parbox 1", i + 1, k)
if ibox == -1 and pbox == -1: if ibox == -1 and pbox == -1:
@ -1890,7 +1902,8 @@ def revert_nobreakdash(document):
j = find_token(document.header, "\\use_amsmath", 0) j = find_token(document.header, "\\use_amsmath", 0)
if j == -1: if j == -1:
document.warning("Malformed LyX document: Missing '\\use_amsmath'.") document.warning("Malformed LyX document: Missing '\\use_amsmath'.")
return i += 1
continue
document.header[j] = "\\use_amsmath 2" document.header[j] = "\\use_amsmath 2"
else: else:
i = i + 1 i = i + 1
@ -2064,7 +2077,8 @@ def revert_rotfloat(document):
l = find_default_layout(document, i + 1, j) l = find_default_layout(document, i + 1, j)
if l == -1: if l == -1:
document.warning("Malformed LyX document: Missing `\\begin_layout' in Float inset.") document.warning("Malformed LyX document: Missing `\\begin_layout' in Float inset.")
return i = j
continue
subst = ['\\begin_layout Standard', subst = ['\\begin_layout Standard',
'\\begin_inset ERT', '\\begin_inset ERT',
'status collapsed', '', 'status collapsed', '',
@ -2126,7 +2140,8 @@ def revert_widesideways(document):
l = find_default_layout(document, i + 1, j) l = find_default_layout(document, i + 1, j)
if l == -1: if l == -1:
document.warning("Malformed LyX document: Missing `\\begin_layout' in Float inset.") document.warning("Malformed LyX document: Missing `\\begin_layout' in Float inset.")
return i = j
continue
subst = ['\\begin_layout Standard', '\\begin_inset ERT', subst = ['\\begin_layout Standard', '\\begin_inset ERT',
'status collapsed', '', 'status collapsed', '',
'\\begin_layout Standard', '', '', '\\backslash', '\\begin_layout Standard', '', '', '\\backslash',
@ -2285,7 +2300,7 @@ def revert_subfig(document):
if opt != -1: if opt != -1:
optend = find_end_of_inset(document.body, opt) optend = find_end_of_inset(document.body, opt)
if optend == -1: if optend == -1:
document.warning("Malformed lyx document: Missing '\\end_inset' (OptArg).") document.warning("Malformed LyX document: Missing '\\end_inset' (OptArg).")
return return
optc = find_default_layout(document, opt, optend) optc = find_default_layout(document, opt, optend)
if optc == -1: if optc == -1:
@ -2395,6 +2410,7 @@ def revert_spaceinset(document):
j = find_end_of_inset(document.body, i) j = find_end_of_inset(document.body, i)
if j == -1: if j == -1:
document.warning("Malformed LyX document: Could not find end of space inset.") document.warning("Malformed LyX document: Could not find end of space inset.")
i += 1
continue continue
document.body[i] = document.body[i].replace('\\begin_inset Space', '\\InsetSpace') document.body[i] = document.body[i].replace('\\begin_inset Space', '\\InsetSpace')
del document.body[j] del document.body[j]
@ -2497,6 +2513,7 @@ def revert_protected_hfill(document):
j = find_end_of_inset(document.body, i) j = find_end_of_inset(document.body, i)
if j == -1: if j == -1:
document.warning("Malformed LyX document: Could not find end of space inset.") document.warning("Malformed LyX document: Could not find end of space inset.")
i += 1
continue continue
del document.body[j] del document.body[j]
subst = document.body[i].replace('\\begin_inset Space \\hspace*{\\fill}', \ subst = document.body[i].replace('\\begin_inset Space \\hspace*{\\fill}', \
@ -2518,6 +2535,7 @@ def revert_leftarrowfill(document):
j = find_end_of_inset(document.body, i) j = find_end_of_inset(document.body, i)
if j == -1: if j == -1:
document.warning("Malformed LyX document: Could not find end of space inset.") document.warning("Malformed LyX document: Could not find end of space inset.")
i += 1
continue continue
del document.body[j] del document.body[j]
subst = document.body[i].replace('\\begin_inset Space \\leftarrowfill{}', \ subst = document.body[i].replace('\\begin_inset Space \\leftarrowfill{}', \
@ -2539,6 +2557,7 @@ def revert_rightarrowfill(document):
j = find_end_of_inset(document.body, i) j = find_end_of_inset(document.body, i)
if j == -1: if j == -1:
document.warning("Malformed LyX document: Could not find end of space inset.") document.warning("Malformed LyX document: Could not find end of space inset.")
i += 1
continue continue
del document.body[j] del document.body[j]
subst = document.body[i].replace('\\begin_inset Space \\rightarrowfill{}', \ subst = document.body[i].replace('\\begin_inset Space \\rightarrowfill{}', \
@ -2560,6 +2579,7 @@ def revert_upbracefill(document):
j = find_end_of_inset(document.body, i) j = find_end_of_inset(document.body, i)
if j == -1: if j == -1:
document.warning("Malformed LyX document: Could not find end of space inset.") document.warning("Malformed LyX document: Could not find end of space inset.")
i += 1
continue continue
del document.body[j] del document.body[j]
subst = document.body[i].replace('\\begin_inset Space \\upbracefill{}', \ subst = document.body[i].replace('\\begin_inset Space \\upbracefill{}', \
@ -2581,6 +2601,7 @@ def revert_downbracefill(document):
j = find_end_of_inset(document.body, i) j = find_end_of_inset(document.body, i)
if j == -1: if j == -1:
document.warning("Malformed LyX document: Could not find end of space inset.") document.warning("Malformed LyX document: Could not find end of space inset.")
i += 1
continue continue
del document.body[j] del document.body[j]
subst = document.body[i].replace('\\begin_inset Space \\downbracefill{}', \ subst = document.body[i].replace('\\begin_inset Space \\downbracefill{}', \
@ -2648,6 +2669,7 @@ def revert_pagebreaks(document):
j = find_end_of_inset(document.body, i) j = find_end_of_inset(document.body, i)
if j == -1: if j == -1:
document.warning("Malformed LyX document: Could not find end of Newpage inset.") document.warning("Malformed LyX document: Could not find end of Newpage inset.")
i += 1
continue continue
del document.body[j] del document.body[j]
document.body[i] = document.body[i].replace('\\begin_inset Newpage newpage', '\\newpage') document.body[i] = document.body[i].replace('\\begin_inset Newpage newpage', '\\newpage')
@ -2684,6 +2706,7 @@ def revert_linebreaks(document):
j = find_end_of_inset(document.body, i) j = find_end_of_inset(document.body, i)
if j == -1: if j == -1:
document.warning("Malformed LyX document: Could not find end of Newline inset.") document.warning("Malformed LyX document: Could not find end of Newline inset.")
i += 1
continue continue
del document.body[j] del document.body[j]
document.body[i] = document.body[i].replace('\\begin_inset Newline newline', '\\newline') document.body[i] = document.body[i].replace('\\begin_inset Newline newline', '\\newline')

View File

@ -184,6 +184,8 @@ What's new
- Avoid kerning problems by protecting back quotation marks obtained through - Avoid kerning problems by protecting back quotation marks obtained through
the quotes inset only when a TeX ligature would be triggered (bug 253). the quotes inset only when a TeX ligature would be triggered (bug 253).
- Fixed infinite loops in lyx2lyx when processing files with bad tabulars.
* USER INTERFACE * USER INTERFACE