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/ |