From 8bc25b24af0276985ad080c8364c11cfff3a1fe5 Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Fri, 17 May 2019 17:36:53 -0500 Subject: [PATCH] setupapi: Don't fail a queued copy if no copy was necessary. This fixes a regression introduced by 3e5c9798a80641e0e39e95e4467c60405b22b062. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47219 Signed-off-by: Zebediah Figura Signed-off-by: Alexandre Julliard --- dlls/setupapi/queue.c | 2 +- dlls/setupapi/tests/install.c | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/dlls/setupapi/queue.c b/dlls/setupapi/queue.c index 4a70c5b390c..d51a228d021 100644 --- a/dlls/setupapi/queue.c +++ b/dlls/setupapi/queue.c @@ -1309,7 +1309,7 @@ static BOOL queue_copy_file( const WCHAR *source, const WCHAR *dest, if (op->dst_path && !create_full_pathW(op->dst_path)) return FALSE; - if (do_file_copyW(source, dest, op->style, handler, context)) + if (do_file_copyW(source, dest, op->style, handler, context) || GetLastError() == ERROR_SUCCESS) return TRUE; /* try to extract it from the cabinet file */ diff --git a/dlls/setupapi/tests/install.c b/dlls/setupapi/tests/install.c index 624751fcda3..a0a45969a42 100644 --- a/dlls/setupapi/tests/install.c +++ b/dlls/setupapi/tests/install.c @@ -1468,6 +1468,16 @@ static void test_need_media(void) ok(got_need_media == 1, "Got %u callbacks.\n", got_need_media); ok(delete_file("dst/one.txt"), "Destination file should exist.\n"); + got_need_media = 0; + queue = SetupOpenFileQueue(); + ok(queue != INVALID_HANDLE_VALUE, "Failed to open queue, error %#x.\n", GetLastError()); + ret = SetupQueueCopyA(queue, "src", NULL, "one.txt", "File One", NULL, + "dst", NULL, SP_COPY_WARNIFSKIP | SP_COPY_REPLACEONLY); + ok(ret, "Failed to queue copy, error %#x.\n", GetLastError()); + run_queue(queue, need_media_cb); + ok(got_need_media == 1, "Got %u callbacks.\n", got_need_media); + ok(!file_exists("dst/one.txt"), "Destination file should exist.\n"); + /* Test with a subdirectory. */ got_need_media = 0;