Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Проблема с VIO-функциями и...

1 view
Skip to first unread message

Paul Belyayev

unread,
Oct 4, 2001, 7:56:14 AM10/4/01
to
Hi All,

Есть две проблемы.
Имеется OS/2 4.0 (FP15), VAC++ 4.0 Professional (FP1) (куплен официально!).
Проблема первая: приложение, использующее VIO-функции падает. Это же
приложение,
откомпилированное в VAC++ 3.0 прекрасно работает.
В icc файле указана опция link(pmtype,vio). Падение происходит при вызове
VioGetCurType:

VIOCURSORINFO vioci;
...
VioGetCurType(&vioci,(HVIO) 0);

Проблема вторая. Примеры из IOC с использованием toolbar-ов
(как и мое собственное приложение с toolbar) просто молча закрывается.
Комментирую addAsLast кнопки в toolbar - запускается (естественно без
кнопки), иначе - вот такая ерунда.

Может быть кто-то такое уже видел? Заранее благодарен.

Павел.

Павел.

Gleb Kulikov

unread,
Oct 5, 2001, 4:16:24 AM10/5/01
to
Hello Paul!

Replying to a message of Paul Belyayev(2:5020/400), 04/10/2001 to All:

PB> Проблема вторая. Примеры из IOC с использованием toolbar-ов
PB> (как и мое собственное приложение с toolbar) просто молча закрывается.

В 3.6.5 с налоденным фиксом -- работает. В 4.0 --

Gleb wrote:
>
> On Fri, 31 Aug 2001 10:59:45 +0200 (MEST), Paul Floyd wrote:
>
> >If my fix for the OCL DLLs helps you, then you might also be interested in
> >I can send that to you if you like.
>
> Thank you! If you can send me that via e-mail, it will be very interesting
(unfortunally,
> becouse of my semibroken internet connection, i can not work with ibm
> newsserver).

OK, the third file to fix is x:\ibmcpp40\lib\cppogs40.lib, at offset
0x1b8500

the bytes I have there are

F3 AA
C7 03 44 00 00 00 ; edit 0x44 to be 0x10
66 0F B6 20
66 89 53 0E



> Btw, is anywhere official solution, or IBM is still indifferently?

No official solution. As far as IBM is convcerned, VAC++ is dead on OS/2
and Windows. There has been no fix for VAC++ 4.0 OS/2 for about 2 or 3
years.

--
Paul Floyd http://paulf.free.fr (for what it's worth)
MailTo:pa...@free.fr

--------------------------------------------

>Newsgroups: comp.os.os2.programmer.misc
>Subject: Re: vac 4 + OCL
>Date: Wed, 29 Aug 2001 21:02:04 +0100
>Organization: T-Online

There is a bug in the OCL for VAC 4.0 with GRADD drivers. (Or is the bug
in GRADD ??? Typically endless loop when asking IBM).
There is a workaround. Here is a message from Paul Floyd:
***********************************************************************
Hi

Well, I've tried this, but I had problems with both STL and the fact
that I already included pmbitmap.h in my project (to allow me to save
bitmaps to file).

So I thought if the change is only that small, I should be able to track
it down in the debugger. It's the first time I've used the x86 debugger
in the IDE, and probably the last! It is a total disaster. The opcodes
displayed were not the same as the opcodes I single-stepped.

So I switched to using ipmd (idebug as it's called now). This crashes
most times I try to restart a project after an exception, and when I
close it, but at least it shows the right opcodes!!!!

The code is in x:\ibmcpp40\runtime\cppogi40.dll. I patched offset
0007f78c, changing it from 44h to 10h. This is for VAC++ 4.0 for OS/2
with FP 1 applied.

If you want to be very careful, then the hex in that region is:
83 E1 03
F3 AA
C7 03 44 00 00 00 (opcode to patch)
66 0F B6 56 20
66 89 53 0E
66 C7 43 0C 01 00
8B 46 14 0F

I didn't write down the assembler, but it's something like AND, REP
STOSB, 4 MOVs and an IMUL.

After doing this my app would run OK standalone, but not in the IDE.

On my system I have 3 different copies of this DLL,
Directory of F:\IBMCPP40\dll

21-01-99 4:10p 7968076 0 cppogi40.dll
1 file(s) 7968076 bytes used

Directory of F:\IBMCPP40\iocsrc\dll

13-11-98 2:57p 7929110 0 cppogi40.dll
1 file(s) 7929110 bytes used

Directory of F:\IBMCPP40\runtime

10-06-00 10:43p 969568 0 cppogi40.dll
1 file(s) 969568 bytes used


So I set beginlibpath to include f:\ibmcpp40\dll, and ran ipmd again.
Rather more easily than with the assembler view, I tracked down the
change to be at offset 000aa9c7, with the 4 opcodes
8B 45 58
C7 00 44 00 00 00 (opcode to change)
8B 45 08
66 0F B6 48 (not the full opcode)

I don't know if this patch will cause problems with other video drivers
(with Matrox cards) or with different video cards. We'll see.

My mind boggles at the fact that for at least a year this bug has been
known, yet a company the size of IBM has shown itself incapable of
changing 2 bytes in 2 files.

I don't want to end on a sour note though, I must say I'm quite pleased
that for the first time I can run the VAC++ IDE, Visual Builder,
applications using IToolBar and cold boot all at the same time and
without having to swap video drivers.

Gleb wrote:
>
> On Fri, 31 Aug 2001 10:59:45 +0200 (MEST), Paul Floyd wrote:
>
> >If my fix for the OCL DLLs helps you, then you might also be interested in
> >I can send that to you if you like.
>
> Thank you! If you can send me that via e-mail, it will be very interesting
(unfortunally,
> becouse of my semibroken internet connection, i can not work with ibm
> newsserver).

OK, the third file to fix is x:\ibmcpp40\lib\cppogs40.lib, at offset
0x1b8500

the bytes I have there are

F3 AA
C7 03 44 00 00 00 ; edit 0x44 to be 0x10
66 0F B6 20
66 89 53 0E

> Btw, is anywhere official solution, or IBM is still indifferently?

No official solution. As far as IBM is convcerned, VAC++ is dead on OS/2
and Windows. There has been no fix for VAC++ 4.0 OS/2 for about 2 or 3
years.


Салют, /Gleb

0 new messages