BUG: IsEqualGUIDBase(...) Always Returns TRUE Under C++ (156798)
The information in this article applies to:
This article was previously published under Q156798
1.00
WINDOWS
kbusage kbbug1.00
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.
Modification Type: | Major | Last Reviewed: | 11/7/2002 |
---|
Keywords: | KB156798 kbAudDeveloper |
---|
|