Mercurial > octave
changeset 22556:121e9639b604
doc: Correctly get last entry from DOCSTRINGS file (bug #49224).
* help.cc (raw_help_from_docstrings_file): If eof is hit, seek the file pointer
back to the end of the data in the file. Compute the length of the last
DOCSTRING entry as the difference between the end of the file and the start of
the last entry. Reset the eof flag manually so that the while loop will exit.
author | Rik <rik@octave.org> |
---|---|
date | Thu, 29 Sep 2016 15:44:54 -0700 |
parents | 53209d4c9421 |
children | 55dde71ee251 |
files | libinterp/corefcn/help.cc |
diffstat | 1 files changed, 10 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/libinterp/corefcn/help.cc Thu Sep 29 13:55:26 2016 -0400 +++ b/libinterp/corefcn/help.cc Thu Sep 29 15:44:54 2016 -0700 @@ -421,7 +421,16 @@ file.ignore (std::numeric_limits<std::streamsize>::max(), 0x1d); // Position of end of help text. - std::streamoff len = file.tellg () - beg - 1; + std::streamoff len; + + if (! file.eof ()) + len = file.tellg () - beg - 1; + else + { + file.seekg (0, file.end); + len = file.tellg () - beg - 1; + file.setstate (file.eofbit); // reset eof flag + } help_txt_map[name] = txt_limits_type (beg, len); }