MSVCIRT and _pioinfo()

Uwe Bonnes bon at elektron.ikp.physik.tu-darmstadt.de
Fri Mar 7 14:15:39 CST 2003


Hallo,

the MS Standard C++ Libraries implementation in MSVCIRT directly accesses
low level MSVCRT structures, like _pioinfo(), the pointer to an array of
ioinfo structures. A google/search search brings up some information,
e.g. (*1).

Some program in the Xilinx suite silently crashes when this _pioinfo() is
accessed inside MSVCIRT with builtin msvcrt. How should we handle this
case? Implement this array, in the same way as Microsoft did? Or can we
construct a builtin MSVCIRT perhaps by using wrappers around some other
Standard C++ Libraries implementation?

At least a more visible way to crash when unimplemted structures are
accessed would be fine.

Comments welcome.

Bye

(*1):
from: http://www.geocrawler.com/archives/3/1783/2001/8/0/6525036/
(squid cvs)

+/* internal to CTRLIB */
+typedef struct {
+        long osfhnd;    /* underlying OS file HANDLE */
+        char osfile;    /* attributes of file (e.g., open in text mode?) */
+        char pipech;    /* one char buffer for handles opened on pipes */
+#ifdef _MT
+        int lockinitflag;
+        CRITICAL_SECTION lock;
+#endif  /* _MT */
+    }   ioinfo;
+extern _CRTIMP ioinfo * __pioinfo[];
+#define IOINFO_L2E          5
+#define IOINFO_ARRAY_ELTS   (1 < IOINFO_L2E)
+#define _pioinfo(i) ( __pioinfo[(i) > IOINFO_L2E] + ((i) &(IOINFO_ARRAY_ELTS - \
+                              1)) )
+#define _osfile(i)  ( _pioinfo(i)->osfile )
+

-- 
Uwe Bonnes                bon at elektron.ikp.physik.tu-darmstadt.de

Institut fuer Kernphysik  Schlossgartenstrasse 9  64289 Darmstadt
--------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------



More information about the wine-devel mailing list