BUG: IsEqualGUIDBase(...) Always Returns TRUE Under C++

ID: Q156798

1.00 WINDOWS kbusage kbbug1.00
The information in this article applies to:
  • Microsoft OLE DB, version 1.0

BUG #: 2725 (OLEDBSDK)

SYMPTOMS

In the Oledb.h header file, the IsEqualGUIBase(...) function is defined by the following lines:


   #ifdef __cplusplus
   inline BOOL IsEqualGUIDBase(const GUID &rguid1, const GUID  &rguid2)
   { return !memcmp(&(rguid1.Data2), &(rguid1.Data2),    sizeof(GUID) -
   sizeof(rguid1.Data1)); } 
This function will always return TRUE, because it is comparing rguid1.Data2 to itself (rguid1.Data2).


WORKAROUND

To work around this problem, change the second parameter in the memcmp function from rguid1.Data2 to rguid2.Data2. The following is the correct function definition:


   #ifdef __cplusplus
   inline BOOL IsEqualGUIDBase(const GUID &rguid1, const GUID  &rguid2)
   { return !memcmp(&(rguid1.Data2), &(rguid2.Data2),    sizeof(GUID) -
   sizeof(rguid1.Data1)); } 


STATUS

Microsoft has confirmed this to be a problem in the OLE Database SDK version 1.0. We are researching this problem and will post new information here in the Microsoft Knowledge Base as it becomes available.

Additional query words: OLE DB 1.00

Keywords : ODBC kbSDKODBC
Version : WINDOWS:1.0
Platform : WINDOWS
Issue type :


Last Reviewed: January 6, 2000
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.