OberonCore https://forum.oberoncore.ru/ |
|
HostFiles.Reader.ReadBytes при len = 0: несобл. постусл. https://forum.oberoncore.ru/viewtopic.php?f=131&t=5203 |
Страница 1 из 1 |
Автор: | Евгений Темиргалеев [ Воскресенье, 24 Август, 2014 17:15 ] |
Заголовок сообщения: | HostFiles.Reader.ReadBytes при len = 0: несобл. постусл. |
Баг это ещё тот Но, так сказать, для порядку: PROCEDURE (r: Reader) ReadBytes (VAR x: ARRAY OF BYTE; beg, len: INTEGER) Код: Pre Вариант len = 0 проходит по "первой" ветке. Всегда должен давать ~r.eof.beg >= 0 20 len >= 0 21 beg + len <= LEN(x) 22 Post r.Pos()' <= r.Base().Length() - len r.Pos() = r.Pos()' + len ~r.eof len bytes read after r.Pos()' and transferred into x r.Pos()' > r.Base().Length() - len r.Pos() = r.Base().Length() r.eof r.Base().Length() - r.Pos()' bytes read after r.Pos()' and transferred into x Реализация в HostFiles при len = 0 не изменяет r.eof. Код: PROCEDURE (r: Reader) ReadBytes (VAR x: ARRAY OF BYTE; beg, len: INTEGER);
VAR from, to, count, restInBuf: INTEGER; BEGIN (* portable *) ASSERT(beg >= 0, 21); IF len > 0 THEN ... ELSE ASSERT(len = 0, 22) END END ReadBytes; |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |