FIX: IsKindOf fails when you compare CDaoException classes (329066)



The information in this article applies to:

  • The Microsoft Foundation Classes (MFC)
  • Microsoft Visual C++ .NET (2002)
  • Microsoft Visual Studio .NET (2002), Academic Edition
  • Microsoft Visual Studio .NET (2002), Enterprise Architect Edition
  • Microsoft Visual Studio .NET (2002), Enterprise Developer Edition
  • Microsoft Visual Studio .NET (2002), Professional Edition

This article was previously published under Q329066

SYMPTOMS

When you call CObject::IsKindOf on a CDaoException object, the result may return false, although it is a CDaoException object.

CAUSE

The DAO classes (CDaoDatabase, CDaoRecordset, CDaoException) are located in the static link library MFCS70[D].lib. Each of these classes has its own construct CRuntimeClass, so the data structures that GetRuntimeClass returns may be at different locations in the same process. This may occur where an application is made up of an EXE file and a DLL file, and both files use the CDaoException class. If you construct an object of class CDaoException in one binary and then use it and compare its type to RUNTIME_CLASS(CDaoException) in the other binary, the test IsKindOf returns false.

In previous versions, the DAO classes were located in MFC42[D].DLL, so this scenario would work because any instances of these classes came from the same binary.

RESOLUTION

Service pack information

To resolve this problem, obtain the latest service pack for Microsoft Visual Studio .NET. For more information, click the following article number to view the article in the Microsoft Knowledge Base:

837234 List of bugs that are fixed in Visual Studio .NET 2002 Service Pack 1

Hotfix information

The English version of this fix has the file attributes (or later) that are listed in the following table. The dates and times for these files are listed in coordinated universal time (UTC). When you view the file information, it is converted to local time. To find the difference between UTC and local time, use the Time Zone tab in the Date and Time tool in Control Panel.
   Date         Time   Version        Size        File name
   --------------------------------------------------------------
   27-Sep-2002  07:19                  2,011,136  Atl70.pdb
   12-Sep-2002  22:50                     39,733  Afxdao.h
   27-Sep-2002  07:19  7.0.9613.0         84,992  Atl70.dll
   24-Jul-2002  02:08                      3,443  Atlbase.cpp
   24-Jul-2002  02:08                    163,480  Atlbase.h
   24-Jul-2002  02:08                     15,521  Atlcore.h
   24-Jul-2002  02:08                     43,105  Atlimage.h
   27-Sep-2002  07:19                     48,090  Atlmincrt.lib
   27-Sep-2002  07:19                    659,456  Atlmincrt.pdb
   27-Sep-2002  07:18                  1,003,690  Atlsd.lib
   27-Sep-2002  07:18                  1,306,624  Atlsd.pdb
   27-Sep-2002  07:19                    934,264  Atls.lib
   27-Sep-2002  07:19                  1,306,624  Atls.pdb
   27-Sep-2002  07:19                     14,546  Atl.lib
   27-Sep-2002  08:49  7.0.9613.0         40,960  Mfc70chs.dll
   27-Sep-2002  08:49  7.0.9613.0         45,056  Mfc70cht.dll
   27-Sep-2002  08:49  7.0.9613.0         61,440  Mfc70deu.dll
   27-Sep-2002  08:35                    527,756  Mfc70d.def
   27-Sep-2002  08:36                  3,066,694  Mfc70d.lib
   27-Sep-2002  08:49  7.0.9613.0         57,344  Mfc70enu.dll
   27-Sep-2002  08:49  7.0.9613.0         61,440  Mfc70esp.dll
   27-Sep-2002  08:49  7.0.9613.0         61,440  Mfc70fra.dll
   27-Sep-2002  08:49  7.0.9613.0         61,440  Mfc70ita.dll
   27-Sep-2002  08:49  7.0.9613.0         49,152  Mfc70jpn.dll
   27-Sep-2002  08:49  7.0.9613.0         49,152  Mfc70kor.dll
   27-Sep-2002  08:37                    528,736  Mfc70ud.def
   27-Sep-2002  08:38  7.0.9613.0      2,064,896  Mfc70ud.dll
   27-Sep-2002  08:40                  3,978,842  Mfc70ud.lib
   27-Sep-2002  08:56                    393,034  Mfc70u.def
   27-Sep-2002  09:11  7.0.9613.0      1,016,832  Mfc70u.dll
   27-Sep-2002  08:42                  3,042,324  Mfc70u.lib
   27-Sep-2002  08:55                    392,265  Mfc70.def
   27-Sep-2002  09:21  7.0.9613.0      1,028,096  Mfc70.dll
   27-Sep-2002  08:37                  2,287,020  Mfc70.lib
   12-Sep-2002  22:50                      7,662  Mfcdll.mak
   27-Sep-2002  08:36                    526,960  Mfcs70d.lib
   27-Sep-2002  08:38                    468,956  Mfcs70ud.lib
   27-Sep-2002  08:57                    452,554  Mfcs70u.lib
   27-Sep-2002  08:56                    505,780  Mfcs70.lib
   27-Sep-2002  08:32                 16,601,758  Mafxcwd.lib
   27-Sep-2002  08:30                  2,093,056  Mafxcwd.pdb
   27-Sep-2002  08:32                 16,466,616  Mafxcw.lib
   27-Sep-2002  08:31                  2,068,480  Mafxcw.pdb
   20-Sep-2002  06:18                     44,958  Oledisp1.cpp
   27-Sep-2002  08:34                 17,035,162  Uafxcwd.lib
   27-Sep-2002  08:33                  2,093,056  Uafxcwd.pdb
   27-Sep-2002  08:35                 16,741,970  Uafxcw.lib
   27-Sep-2002  08:34                  2,068,480  Uafxcw.pdb
   27-Sep-2002  08:36  7.0.9613.0      2,068,480  Mfc70d.dll
   27-Sep-2002  08:36                  7,826,432  Mfc70d.pdb
   27-Sep-2002  08:38                  7,859,200  Mfc70ud.pdb
   27-Sep-2002  09:11                  9,907,200  Mfc70u.pdb
   27-Sep-2002  09:21                  9,915,392  Mfc70.pdb
   27-Sep-2002  08:36                  1,880,064  Mfcs70d.pdb
   27-Sep-2002  08:38                  1,888,256  Mfcs70ud.pdb
   27-Sep-2002  08:57                  1,888,256  Mfcs70u.pdb
   27-Sep-2002  08:56                  1,880,064  Mfcs70.pdb

				

STATUS

Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article. This problem was first corrected in Visual Studio .NET 2002 Service Pack 1.

Modification Type:MinorLast Reviewed:8/24/2005
Keywords:kbvs2002sp1sweep kbvs2002sp1fix kbQFE kbbug kbfix KB329066