OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Воскресенье, 16 Июнь, 2019 14:12

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
СообщениеДобавлено: Воскресенье, 24 Август, 2014 17:15 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4489
Откуда: Россия, Орёл
Баг это ещё тот :) Но, так сказать, для порядку:

PROCEDURE (r: Reader) ReadBytes (VAR x: ARRAY OF BYTE; beg, len: INTEGER)
Код:
Pre
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
Вариант len = 0 проходит по "первой" ветке. Всегда должен давать ~r.eof.

Реализация в 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 сообщение ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2019, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB