Add TRACEs to NtCreateFile returns (second try)

James Hawkins truiken at gmail.com
Mon Aug 25 10:58:04 CDT 2008


On Mon, Aug 25, 2008 at 3:12 AM, Markus Hitter <mah at jump-ing.de> wrote:
>
> Am 25.08.2008 um 01:31 schrieb James Hawkins:
>
>> 2008/8/24 Markus Hitter <mah at jump-ing.de>:
>>>
>>
>> +    if (!attr || !attr->ObjectName)
>> +    {
>> +        TRACE("returning STATUS_INVALID_PARAMETER\n");
>> +        return STATUS_INVALID_PARAMETER;
>> +    }
>>
>>
>> These are all very useless TRACES, except for possibly the returned
>> handle value.
>
> Well, the idea is to TRACE() something for all possible return values.
> Michael Karcher, Rob Shearman and me obviously consider them as useful:
>
> <http://thread.gmane.org/gmane.comp.emulators.wine.patches/54527/>
>

I doubt Rob was agreeing with the above trace.  He merely clarified
how you should print variable values and returned handles.

>> As a side note of something I just noticed, the check for NULL attr will
>> never be true because we'll crash in the TRACE when we dereference attr.
>
> In case of (attr == NULL), same as (!attr), the code right to the ||
> shouldn't be reached, so no dereferencing should take place, then.
> TRACE()/printf() is capable of handling 0/NULL/nil values as well.
>

No, take a look at the TRACE again.  If attr is NULL, you'll crash in
the TRACE.  Neither TRACE nor printf handle NULL strings; debugstr_a/w
is what handles NULL strings, but that's beside the point I'm making,
as we're talking about attr being NULL, not attr->ObjectName.

> BTW., the TRACE() in the code you cited doesn't dereference anything and for
> the other parts of the patch, dereferencing only takes place where the
> current code dereferences anyways.
>

Thus why I said "as a side note."  It had nothing to do with your patch.

-- 
James Hawkins



More information about the wine-devel mailing list