-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Anyone saw the article in June's Dr. Dobb's Journal, July 95 titled
"Finding Binary Clones with Opstrings & Function Digests: Part I" by
Andrew Schulman http://www.undoc.com
Although just the first article, It already shows promise from wine's
perspective. Generating hashes on the functions in the DLL's & EXE's
while taking into consideration not to be fooled by the pointer diffs
because of different positions in the binaries,
Huge potential to find similar functions in all dll's instead of
recoding them all. According to the article something Windows suffers
from quite a bit...
Just my 2c
Tnx & Bi
Bennie Kahler-Venter
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.5 (GNU/Linux)
iD8DBQFC5fc7jrc/ZmvwnjARAgsyAJ9EGFZjvY+bvS4MuUJuS9IZ9WZ59ACgkAr1
ynML4cy/z/JKviK17RrwiOE=
=TlTz
-----END PGP SIGNATURE-----
"James Hawkins" <truiken(a)gmail.com> wrote:
> +#define HH_Alloc(size) ((LPVOID)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, size))
> +
> +#define HH_Free(buffer) \
> + if (buffer) \
> + HeapFree(GetProcessHeap(), 0, (HLOCAL)buffer);
Alot of work has been done to avoid tests for NULL before HeapFree
call, please do not introduce them again. Personally I don't see
the point of HH_Alloc and HH_Free macros at all.
> +#define HH_SafeRelease(x) \
> + if (x) \
> + { \
> + x->lpVtbl->Release(x); \
> + x = NULL; \
> + }
Again, a direct access to a vtable. There is no much point in that
macro either, do that check directly instead and get rid of hhctrl.h
completely.
--
Dmitry.
Hello.
Fixing MSHTML tests I found a bug in Windows.
In tests I passed const WNDCLASSEX, to RegisterClassEx
what should work as its declaration is:
ATOM WINAPI RegisterClassExW(const WNDCLASSEXW *);
Changing passed WNDCLASS to nonconst makes it
works. I wrote small tests (attached) showing that if hInstance
of WNDCLASSEX is NULL, RegisterClassEx sets it to
GetModuleHandle(NULL). It, of course, couses segmentation
fault in case CMASSWNDEX is const. This problem seams
to happen on XP, NT 4, 2k and 2k3. So the question is if
we should clone this bug? Some applications may expect
it, but other may crash. They will crash on Windows anyway...
Or we should mark test as todo_wine and change it
if we found application that depend on it?
Thanks,
Jacek
Index: dlls/user/tests/class.c
===================================================================
RCS file: /home/wine/wine/dlls/user/tests/class.c,v
retrieving revision 1.19
diff -u -p -r1.19 class.c
--- dlls/user/tests/class.c 15 Jun 2005 10:21:19 -0000 1.19
+++ dlls/user/tests/class.c 25 Jul 2005 16:14:10 -0000
@@ -301,6 +301,15 @@ static void test_instances(void)
HINSTANCE user32 = GetModuleHandleA("user32");
HINSTANCE main_module = GetModuleHandleA(NULL);
+ WNDCLASSEXA clsex = {
+ sizeof(WNDCLASSEXW),
+ 0,
+ ClassTest_WndProc,
+ 0, 0, NULL, NULL, NULL, NULL, NULL,
+ "const_test",
+ NULL
+ };
+
memset( &cls, 0, sizeof(cls) );
cls.style = CS_HREDRAW | CS_VREDRAW;
cls.lpfnWndProc = ClassTest_WndProc;
@@ -436,6 +445,10 @@ static void test_instances(void)
ok( !GetClassInfo( 0, name, &wc ), "Class found with null instance\n" );
ok( GetLastError() == ERROR_CLASS_DOES_NOT_EXIST, "Wrong error code %ld\n", GetLastError() );
ok( UnregisterClassA( name, 0 ), "Unregister failed for null instance\n" );
+
+ ok( RegisterClassExA( &clsex), "RegisterClassExA failed\n");
+ ok( clsex.hInstance == GetModuleHandle(NULL), "hInstance=%08lx\n, expected %08lx\n",
+ clsex.hInstance, GetModuleHandle(NULL));
/* registering for user32 always fails */
cls.lpszMenuName = "user32";
I ran into the same issue and was in the process of trying to fix it
up. Maybe this is a better approach because it doesn't require any
user intervention? The idea was to pass the relative path through
that function to get the full local path.
I can attach the rest of the patch if you'd like but it isn't in a
finished state.
Chris
On 7/23/05, Tony Lambregts <tony.lambregts(a)gmail.com> wrote:
> These patch are to meant address situations like mine when the AppDB is located
> a http://localhost/appdb instead of http://localhost/. These patches can be
> applied independatly from my other patches.
>
> Change Log: fix situation when AppDB is not at DocumentRoot.
>
> Files Changed: include/config.php.sample
>
>
>
>
>
>
>
> Index: include/config.php.sample
> ===================================================================
> RCS file: /home/wine/appdb/include/config.php.sample,v
> retrieving revision 1.11
> diff -u -r1.11 config.php.sample
> --- include/config.php.sample 23 Apr 2005 02:24:35 -0000 1.11
> +++ include/config.php.sample 23 Jul 2005 22:28:16 -0000
> @@ -17,6 +17,11 @@
> define("APPDB_OWNER_URL","http://www.winehq.org/"); // website of this product/company
> define("APPDB_OWNER_EMAIL","appdb(a)winehq.org"); // e-mail of this product/company
> define("BUGZILLA_ROOT","http://bugs.winehq.org/"); // path to bugzilla
> +// the following is usefull if the location of your appdb is offset from the
> +// DocumentRoot defined in httpd.config
> +// For example: If you access the appdb from http://localhost/appdb
> +// uncomment the following line .
> +//define("APPDB_OFFSET","/appdb");
>
>
> /*
>
>
>
I'm trying out this month's release. I'm trying to
install AbsoluteFTP which previous installed fine, but
now I try to install, the install shield begins, but
just sits there. There's not even any output...
How can I get something together to report to you
guys?
Hijinio
____________________________________________________
Start your day with Yahoo! - make it your home page
http://www.yahoo.com/r/hs
On Monday 25 July 2005 20:31, Oliver Stieber wrote:
> Hi,
> This patch implements resource tracking, require for reset and evict
> managed resources and provides extra sanity checks.
>
> I've had to test with an older version of wine-cvs since head doesn't seem
> to compile cleanly or run at the moment, but there aren't otherwise any
> changes in wine-cvs that would affect this patch.
>
Why you need 2 breaks here ?
+ case D3DRTYPE_VOLUME:
+ break;
+
+ /* TODO: nothing really? */
+ break;
Regards,
Raphael
PS: its better to use unsigned for indexes and counts :)
Hi
just wondering if someone could help me....i am
running Debian operating system....and i am trying to
install/run WINE.....i have typed the command $apt-get
install wine in root user.
KHE:/home/zhe# apt-get install wine
Reading Package Lists... Done
Building Dependency Tree... Done
wine is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not
upgraded.
it seems to have installed but it has not appeared on
my programs list....how do i get it running....
i have also tried this command:
KHE:/home/zhe# dpkg -i wine_0.0.20030115-1.deb
dpkg: error processing wine_0.0.20030115-1.deb
(--install):
cannot access archive: No such file or directory
Errors were encountered while processing:
wine_0.0.20030115-1.deb
how do i get WINE running
thx
Cheers
K-Si
Send instant messages to your online friends http://au.messenger.yahoo.com
Isn't WODM_RESET should stop playback/recording immediately? In which case
shouldn't we use snd_pcm_drop instead?
I'm guessing here. I have that loop disabled here for some time now. And I can't
hear any artifacts.
PS: If we drop that loop we should remove all associated stuff as well.
Vitaliy Margolen
Monday, July 25, 2005, 9:27:42, Robert Shearman wrote:
> Changelog:
> wait_for_poll can go into an infinite loop. Remove it and replace it
> with snd_pcm_drain which is more likely to do what the original author
> intended.
I've been doing some debugging of the exception handler and have come
across a problem for which I'm not sure what the best solution is. It
involves an application using the ESP for something other than the
stack.
The current DIB code uses protection to detect when the application
modifies the DIB bits and respond accordingly. It does this by
disabling read and/or write access to pages and then catching
exceptions when they are thrown so that it can keep the X11 and
windows versions of the DIB seporate but reflect changes appropriately
(There may be other pieces of Wine which use similar tactics).
The application I am debugging, however, uses the ESP as a
counter/memory offset in it's updating of the DIB. While not the best
selection of registers, the application relies on ESP not being used
for anything else while the DIB updates take place (In Windows this
assumption is true).
A made-up example of assembly code is as follows:
mov esp, [0x12345678] ; Save the ESP
mov 0x128796, esp ; Set up ESP for the DIB modification
mov 0, ebp
loop:
mov ebp, [sp + bp] ; Write out the byte to the DIB
inc ebp
sub esp, 0x10000 ; The high word is a counter
jns loop
mov [0x12345678], esp ; Restore the ESP
Now, one of the first things our exception handler in signal_i386.c
does is set up the stack layout to deliver the exception to the
application (see the setup_exception function), but in this case ESP
definately does not point to the stack (and the application never
intended for an exception to occurr). It instead contains a counter
in the high word, and a memory offset in the low word. Because of
this, there is a double fault which happens and Wine actually
Segfaults as opposed to breaking into the debugger.
So, what I'm wondering is if anyone who has experiance with the
exception handling code has any thoughts on how this problem can be
fixed.
If your interested in actual application code which does this, Alpha
Centauri is what I found the initial problem with. You can download
the demo at http://www.firaxis.com/downloads/Demo/smac_demo1_1.exe. The
assembly code in the application which causes the crash is located
starting at around offset 0x0060d954.
As an interesting side-effect, if there are other applications which
are using ESP in a "bad" manor, then we may be corrupting memory
whenever we generate an exception within Wine. This issue would be
very hard to track down, which makes me think that only exceptions
which would normally be generated in Windows should cause Wine to
modify the application stack.
Comments? Suggestions?
Glenn.