Eric Pouech : server: Fix console creation logic.
Alexandre Julliard
julliard at winehq.org
Wed Sep 22 14:47:52 CDT 2010
Module: wine
Branch: master
Commit: 04607ca6320289b64fa7dc7abd67ff5a45141ff4
URL: http://source.winehq.org/git/wine.git/?a=commit;h=04607ca6320289b64fa7dc7abd67ff5a45141ff4
Author: Eric Pouech <eric.pouech at orange.fr>
Date: Tue Sep 21 22:09:06 2010 +0200
server: Fix console creation logic.
---
server/console.c | 12 +++++++++---
1 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/server/console.c b/server/console.c
index d256ae8..4441163 100644
--- a/server/console.c
+++ b/server/console.c
@@ -1386,6 +1386,7 @@ DECL_HANDLER(alloc_console)
struct thread *renderer;
struct console_input *console;
int fd;
+ int attach = 0;
switch (req->pid)
{
@@ -1398,12 +1399,14 @@ DECL_HANDLER(alloc_console)
return;
}
grab_object( process );
+ attach = 1;
break;
case 0xffffffff:
/* no renderer, console to be attached to current process */
renderer = NULL;
process = current->process;
grab_object( process );
+ attach = 1;
break;
default:
/* renderer is current, console to be attached to req->pid */
@@ -1411,7 +1414,7 @@ DECL_HANDLER(alloc_console)
if (!(process = get_process_from_id( req->pid ))) return;
}
- if (process != current->process && process->console)
+ if (attach && process->console)
{
set_error( STATUS_ACCESS_DENIED );
goto the_end;
@@ -1433,8 +1436,11 @@ DECL_HANDLER(alloc_console)
if (!console->evt ||
(evt = alloc_handle( current->process, console->evt, SYNCHRONIZE|GENERIC_READ|GENERIC_WRITE, 0 )))
{
- process->console = (struct console_input*)grab_object( console );
- console->num_proc++;
+ if (attach)
+ {
+ process->console = (struct console_input*)grab_object( console );
+ console->num_proc++;
+ }
reply->handle_in = in;
reply->event = evt;
release_object( console );
More information about the wine-cvs
mailing list