OberonCore
https://forum.oberoncore.ru/

B1: HostFiles.NewWriter нарушает спецификацию
https://forum.oberoncore.ru/viewtopic.php?f=116&t=1948
Страница 1 из 1

Автор:  Илья Ермаков [ Понедельник, 12 Октябрь, 2009 07:07 ]
Заголовок сообщения:  B1: HostFiles.NewWriter нарушает спецификацию

Есть:

Код:
   PROCEDURE (f: File) NewWriter (old: Files.Writer): Files.Writer;
      VAR w: Writer;
   BEGIN   (* portable *)
      ASSERT(f.state # closed, 20); ASSERT(f.state # shared, 21);
      IF (old # NIL) & (old IS Writer) THEN w := old(Writer) ELSE NEW(w) END;
      IF w.base # f THEN
         w.base := f; w.buf := NIL; w.SetPos(f.len)
      END;
      RETURN w
   END NewWriter;


Надо:
Код:
   PROCEDURE (f: File) NewWriter (old: Files.Writer): Files.Writer;
      VAR w: Writer;
   BEGIN   (* portable *)
      ASSERT(f.state # closed, 20);
      IF f.state # shared THEN
         IF (old # NIL) & (old IS Writer) THEN w := old(Writer) ELSE NEW(w) END;
         IF w.base # f THEN
            w.base := f; w.buf := NIL; w.SetPos(f.len)
         END;
         RETURN w
      ELSE
         RETURN NIL
      END
   END NewWriter;


Ляп серьёзный, т.к. определить shared-не shared, read-only - не read-only никакой возможности по файлу нет.

Автор:  Евгений Темиргалеев [ Понедельник, 12 Октябрь, 2009 08:30 ]
Заголовок сообщения:  Re: HostFiles.NewWriter нарушает спецификацию

System/Docu/Files писал(а):
PROCEDURE (f: File) NewWriter (old: Writer): Writer
NEW, ABSTRACT
...
Read-only files allow no writers at all. In such cases, NewWriter returns NIL.
Код:
Post
result # NIL
   old # NIL & old.Base() = f
      result.Pos() = old.Pos()
   old = NIL OR old.Base() # f
      result.Pos() = f.Length()
result = NIL
   read-only file

Автор:  Илья Ермаков [ Понедельник, 12 Октябрь, 2009 09:39 ]
Заголовок сообщения:  Re: HostFiles.NewWriter нарушает спецификацию

Вот-вот.
Я на это и полагался - и налетел. Пришлось латать, т.к. определить невозможность взятия врайтера до его взятия никак невозможно.

Автор:  Иван Денисов [ Воскресенье, 16 Март, 2014 16:26 ]
Заголовок сообщения:  Re: B1: HostFiles.NewWriter нарушает спецификацию

Продублировал сюда, и выставил на голосование для затравки процесса работы с версией центра.
http://forum.blackboxframework.org/view ... ?f=40&t=77

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/