Looking at
RPC_STATUS WINAPI RpcBindingVectorFree( RPC_BINDING_VECTOR** BindingVector )
{
RPC_STATUS status;
ULONG c;
TRACE("(%p)\n", BindingVector);
for (c=0; c<(*BindingVector)->Count; c++) {
status = RpcBindingFree(&(*BindingVector)->BindingH[c]);
}
HeapFree(GetProcessHeap(), 0, *BindingVector);
*BindingVector = NULL;
return RPC_S_OK;
}
we currently always ignore the outcome of RpcBindingFree and return
RPC_S_OK.
However, there is one case where RpcBindingFree returns something
different (which is if *Binding is null when RPC_S_INVALID_BINDING
is returned).
What is the proper way of handling this? Just keeping the code as
is and removing the unused status variable? Breaking the loop once
RpcBindingFree returns something different from RPC_S_OK? Continuing
and returning the first / the last status different from RPC_S_OK?
Gerald
Dear all,
While test another online bank with wine ActiveX,
I got an unimplemented fuction of ntoskrnl: IoGetDeviceInterfaces,
I found it listed in http://source.winehq.org/WineAPI/ntoskrnl.html as a stup,
so I can't understand this log:
wine: Unimplemented function ntoskrnl.exe.IoGetDeviceInterfaces called
at address 0x7b839552 (thread 0022), starting debugger...
Grateful for any explain!
env:
wine1.3.12 on Ubuntu 10.04
Here are the steps:
1. install an ActiveX from
https://e.bank.ecitic.com/perbank5/plugs/CNCBSecPkg_EN.exe
$ rm -rf ~/.wine
$ winetricks -q mfc42
$ wine CNCBSecPkg_EN.exe
fixme:ole:DllRegisterServer stub
fixme:win:DisableProcessWindowsGhosting : stub
fixme:msg:ChangeWindowMessageFilter c057 00000001
fixme:msg:ChangeWindowMessageFilter c057 00000001
fixme:msg:ChangeWindowMessageFilter c057 00000001
fixme:ole:CoCreateInstance no instance created for interface
{ea1afb91-9e28-4b86-90e9-9e9f8a5eefaf} of class
{56fdf344-fd6d-11d0-958a-006097c9a090}, hres is 0x80004002
fixme:sfc:SfcIsFileProtected ((nil), L"C:\\Program
Files\\\4e2d\4fe1\94f6\884c\7f51\94f6\5b89\5168\63a7\4ef6\\unins000.exe")
stub
fixme:win:WINNLSEnableIME hUnknown1 0x1011a bUnknown2 0: stub!
fixme:win:WINNLSEnableIME hUnknown1 0x1011a bUnknown2 -1: stub!
fixme:win:WINNLSEnableIME hUnknown1 0x1011a bUnknown2 0: stub!
wine: Call from 0x7b839552 to unimplemented function
ntoskrnl.exe.IoGetDeviceInterfaces, aborting
wine: Unimplemented function ntoskrnl.exe.IoGetDeviceInterfaces called
at address 0x7b839552 (thread 002b), starting debugger...
wine: Call from 0x7b839552 to unimplemented function
ntoskrnl.exe.IoGetDeviceInterfaces, aborting
wine: Call from 0x7b839552 to unimplemented function
ntoskrnl.exe.IoGetDeviceInterfaces, aborting
2. open the online bank entry with wine builtin IE, then IE will crash:
$ wine iexplore https://e.bank.ecitic.com/perbank5/signIn.do
Please checkout the full log here:
http://pastebin.com/rbAg7gwj
Should I file a singel bug in ntoskrnl component , or separate bugs,
one for ntoskrnl and one for the IE crashing?
Generalliy what component should I switch while file a bug about IE crashing?
Many thanks!
--
Regards,
Qian Hong
-
Sent from Ubuntu
http://www.ubuntu.com/
Good Afternoon.
In section 3.3.6.2 of your User Guide you ask readers to report
successes with databases other than MS SQL. Well here's one (I know
Access 2000 can work with Wine, but this doesn't require Access):
How to set up Wine to enable Windows programs that read and write to Jet
(Access)
databases using ODBC. I write such programs in C and use the API defined in
ODBC API Reference
http://msdn.microsoft.com/en-us/library/ms714562%28VS.85%29.aspx
They work fine on Windows and only require Mingw to be installed to
compile and link them,
both for console programs and those using Windows SDK.
You then can write interactive programs in C which use a full-featured
SQL database which
comes bundled with Windows. No need to purchase Access.
With the set-up below they will also run on Linux (Kubuntu 9.04) and
Wine 1.1.26.
You need to update the registry to install the Access drivers.
Under Windows, export from the Registry to *.reg files the registry entries
- HKLM\Software\ODBC
- HKLM\Software\Microsoft\Jet
all subsidiary keys and values come with them.
You can carefully edit these files to remove drivers and DSNs you don't
need.
Import these files using the registry editor in wine:
wine regedit.exe.
You need to bring across from Windows to Windows\System32 under wine:
clbcatq.dll
comres.dll
expsrv.dll
msjet40.dll
mswstr10.dll
msjter40.dll
msjint40.dll
msjtes40.dll
msrd3x40.dll
odbc32.dll
odbccp32.dll
odbcji32.dll
odbcjt32.dll
odbcad32.exe
odbcint.dll
odbctrac.dll
vbajet32.dll
Register this server in wine:
wine regsvr32.exe msjtes40.dll
No need to install MDAC.
To use Windows ODBC drivers, you have to override Wine's odbccp32.dll
and odbc32.dll with the native
versions because the Wine versions are currently wired directly to
Linux's unixodbc.
This can be done by setting up the ODBC Data Source Administrator
odbcad32.exe using winecfg:
- Add the program to the Applications tab
- then in the libraries tab, pick from 'New override for library' drop-down
odbc32.dll and odbccp32.dll add them and edit them to be Native for Windows.
Then if you do
wine odbcad32.exe
this brings up the ODBC Data Source Administrator window as in the
Windows Control Panel
If needed, set up (System) DSNs using this program.
Bring across the programs and *.mdb database files from Windows.
Using winecfg, you need to set up each program you want to run with
overrides for odbc32.dll and odbccp32.dll
(Applications and Libraries tabs) as above.
The programs should then run as they did in Windows but perhaps a bit
slower with:
wine Odbc-prog.exe
This has been tested twice on a clean .wine install. I cannot vouch
for support of all API and SQL facilities however.
I hope someone finds this useful.
Barry Bird
Hi Guys,
Number of recent well-known games are based on Starling game engine
(Adobe Air+Stage3D for gpu rendering), such as: The Banner Saga 2,
Samorost 3, The Inner World, Angry Birds. They are are falling into
Software rendering mode on plain Wine and thus barely playable (bug
#41635)
Thanks to Béla Gyebrószki finding @ bug #41653, Wine makes these
games consider d3d9 rendering with the following single patch from
wine-staging
https://github.com/wine-compholio/wine-staging/blob/master/patches/setupapi…
This patch implements support of the case when a full driver path is
passed to SetupDiGetClassDevs (trace successfully reaching
AddDeviceToSet for a game below [1]).
I was unable to find @wine-devel discussion around this patch, I would
be grateful if one could kindly remind why it was staged, probably it
just requires refactoring around the change or additional tests?
I am asking this, because Adobe stopped Linux support for the Air years
ago and we could never see such games ported, and therefore plain
Wine's support of gpu acceleration for such games looks important.
Thanks in advance
Best regards,
Donnie
[1]
0009:trace:setupapi:SetupDiGetClassDevsExW
{4d36e968-e325-11ce-bfc1-08002be10318} L"PCI\\VEN_0000&DEV_0000" (nil)
0x0000000a (nil) (null) (nil)
0009:warn:setupapi:SetupDiGetClassDevsExW unsupported flags 0000000a
0009:trace:setupapi:SetupDiCreateDeviceInfoListExW
{4d36e968-e325-11ce-bfc1-08002be10318} (nil) (null) (nil)
0009:trace:setupapi:SETUPDI_EnumerateDevices 0x464ac90,
{4d36e968-e325-11ce-bfc1-08002be10318}, L"PCI\\VEN_0000&DEV_0000",
0000000a
0009:trace:setupapi:SETUPDI_EnumerateMatchingDeviceInstances L"PCI"
L"VEN_0000&DEV_0000"
0009:trace:setupapi:SETUPDI_AddDeviceToSet 0x464ac90,
{4d36e968-e325-11ce-bfc1-08002be10318}, 0,
L"PCI\\VEN_0000&DEV_0000\\13&12345&0", 0
On 22.02.2017 14:51, Jacek Caban wrote:
> Signed-off-by: Jacek Caban <jacek(a)codeweavers.com>
> ---
> dlls/kernel32/tests/pipe.c | 28 ++-
> dlls/ntdll/file.c | 7 +-
> dlls/ntdll/tests/file.c | 2 +-
> server/async.c | 9 +
> server/file.h | 1 +
> server/named_pipe.c | 446
> ++++++++++++++++++++++++++++++++++++++++++---
> 6 files changed, 447 insertions(+), 46 deletions(-)
As I see this updated patchset allows to return the result immediately,
but still uses a USR1 signal to transfer back the IO completion info.
Wouldn't it be useful to get rid of that aswell?
Also please note that we need to distinguish "immediate returns" and
"async returns" to properly implement FileIoCompletionNotificationInformation.
This especially means that waiting internally is not an option.
> + iosb = async_get_iosb( async );
> + if ((blocking || iosb->status != STATUS_PENDING)
> + && !(handle = alloc_handle( current->process, async, SYNCHRONIZE, 0 )))
> + async_terminate( async, get_error() );
I don't think this will work as expected. async_terminate might queue an
APC, but the caller will immediately deallocate the async struct in server_write_file
because status != STATUS_PENDING.
> Od: André Hentschel <nerv(a)dawncrow.de>
>>>>>> Am 2017-02-19 um 10:00 schrieb wylda(a)volny.cz:
>>>>>>> Anyway, there are 7 files out of 2750 which _always_ pickup some random
>>>>>>> value and use that consistently. Why are these libraries built
>>>>>>> inconsitently? Is that intentional? An example is attached.
>>>>>
>>>>> Thanks. These "random" value come from:
>>>>>
>>>>> * olepro_t.res
>>>>> * std_ole_v2_t.res
>>>>> * wuapi_tlb_t.res
>>>
>>> When i do:
>>>
>>> export WIDL_TIME_OVERRIDE="0"
>>> rm dlls/olepro32/olepro_t.res
>>> make -k dlls/olepro32
>>> md5sum -b dlls/olepro32/olepro_t.res
>>>
>>> then i always get different MD5 checksum.
>>>
>>> Marcus, could you send me your dlls/olepro32/Makefile please?
>>> What is your distro?
>>
>> I tried above for both 32bit and 64bit directories, always gives the same md5 in those.
>>
>> openSUSE Tumbleweed, with currently gcc 6.3.1+r245113, binutils-2.27, flex-2.6.1, bison-3.0.4
>>
>
>I can reproduce the bug with the instructions above
>Linux Mint 18.1, gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4), binutils 2.26.1, flex 2.6, biso 3.0.4
>the first bad value is at offset 269h
>Which is datatype2 from MSFT_TypeInfoBase
>
>So initializing datatype2 in add_typedef_typeinfo or the following patch fixes the problem for me:
>
>diff --git a/tools/widl/write_msft.c b/tools/widl/write_msft.c
>index 137bb2d..7904e45 100644
>--- a/tools/widl/write_msft.c
>+++ b/tools/widl/write_msft.c
>@@ -798,6 +798,7 @@ static int encode_type(
> if (!alignment) alignment = &scratch;
> if (!decoded_size) decoded_size = &scratch;
>
>+ *decoded_size = 0;
>
> switch (vt) {
> case VT_I1:
>
Thank Stefan / Marcus / Andre. This fixed 6 files. 7th file is libdinput.a, which also has some
random stuff inside.
This was for 32bit chroot. In 64bit chroot these 6 files are also fixed now. libdinput.a differs again.
But 64bit chroot also shows 2 other files:
* /bin/wmc
* /lib64/wine/msi.dll.so
These last two differs in Build-id's SHA1 of the .note.gnu.build-id section.
Debian Stretch 9.0 Multiarch:
* gcc (Debian 6.3.0-6) 6.3.0 20170205
* binutils 2.27.90.20170124-2
* flex 2.6.1-1.3
* bison 3.0.4.dfsg-1
Regards,
W.
2017-02-27 7:52 GMT+01:00 Alex Henrie <alexhenrie24(a)gmail.com>:
> diff --git a/dlls/d3dx9_36/tests/mesh.c b/dlls/d3dx9_36/tests/mesh.c
> index 95dd06e466..64b7b8823c 100644
> --- a/dlls/d3dx9_36/tests/mesh.c
> +++ b/dlls/d3dx9_36/tests/mesh.c
> @@ -4340,8 +4340,7 @@ static void test_createtext(IDirect3DDevice9 *device, HDC hdc, const char *text,
> if (!compute_text_mesh(&mesh, text, deviation, extrusion, otm.otmEMSquare, glyphs))
> {
> skip("Couldn't create mesh\n");
> - d3dxmesh->lpVtbl->Release(d3dxmesh);
> - return;
> + goto error;
> }
> mesh.fvf = D3DFVF_XYZ | D3DFVF_NORMAL;
I would go in the other direction and strip all the error checking
branches and gotos from those tests. compute_text_mesh() returns FALSE
only on allocation failure and that's not supposed to happen in the
controlled conditions of the test. It's probably better to just fail
and crash in those cases.
On Fri, Feb 24, 2017 at 6:30 PM, Chris Morgan <chmorgan(a)gmail.com> wrote:
> Parallel builds can greatly reduce the overall build time on modern multi-core processors.
>
> Fall back to two parallel builds in the case where nproc is unavailable, most modern
> processors have at least two cores.
>
> Use the 'NPROC' value defined by the environment if it is not null.
>
> Signed-off-by: Chris Morgan <chmorgan(a)gmail.com>
> ---
> tools/wineinstall | 13 +++++++++++--
> 1 file changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/tools/wineinstall b/tools/wineinstall
> index bfd62e3..080d590 100755
> --- a/tools/wineinstall
> +++ b/tools/wineinstall
> @@ -143,10 +143,19 @@ echo "in the meantime..."
> echo
> std_sleep
>
> +# If the NPROC environment variable isn't set use nproc, if available, to determine
> +# the number of processors in the system, if not, fall back to a default NPROC value
> +if type nproc2 &>/dev/null
I don't think this will do what you want ;)
Also, I'm pretty sure &> isn't Posix. You'd want something like:
if type nproc > /dev/null 2>&1
--
-Austin
GPG: 14FB D7EA A041 937B