On 2/20/19 6:59 PM, Paul Gofman wrote:

Hello Jacek,

    thanks for the review.


On 2/20/19 6:33 PM, Paul Gofman wrote:
 -    if (send_completion) NTDLL_AddCompletion( hFile, cvalue, status, total );
-    if (async_read && (options & FILE_NO_INTERMEDIATE_BUFFERING) && status == STATUS_SUCCESS)
-        return STATUS_PENDING;
-    return status;
+    ret_status = async_read && (options & FILE_NO_INTERMEDIATE_BUFFERING) && status == STATUS_SUCCESS
+            ? STATUS_PENDING : status;
+
+    if (send_completion) NTDLL_AddCompletion( hFile, cvalue, status, total, ret_status == STATUS_PENDING );
+    return ret_status;
 }


Do you really need a separated ret_status variable? It seems that you could just set status to STATUS_PENDING instead.


This way I will be passing STATUS_PENDING instead of STATUS_SUCCESS to NTDLL_AddCompletion() status parameter. This looks like a separate change which I tried to avoid. Or do you think it is ok to do that?


Right, I missed that. Separate variable is fine then.


Thanks,

Jacek