Index: trunk/Include/system/gc.sbp
===================================================================
--- trunk/Include/system/gc.sbp	(revision 446)
+++ trunk/Include/system/gc.sbp	(revision 449)
@@ -463,15 +463,14 @@
 	@date	2007/10/21
 	*/
-	Function ScanObject(pObject As *Object, pbMark As *Byte) As Boolean
-		Dim classTypeInfo = Nothing As ActiveBasic.Core._System_TypeForClass
-		classTypeInfo = pObject->GetType() As ActiveBasic.Core._System_TypeForClass
-
+	Function ScanObject( classTypeInfo As ActiveBasic.Core._System_TypeForClass, pObject As *Object, pbMark As *Byte) As Boolean
 		If IsNull( classTypeInfo ) Then
 			Return False
 		End If
 
-		If Object.ReferenceEquals( classTypeInfo, ActiveBasic.Core._System_TypeBase.selfTypeInfo ) Then
-			' TypeInfoクラスの場合はTypeBaseImplクラスとして扱う
-			classTypeInfo = _System_TypeBase_Search( "ActiveBasic.Core.TypeBaseImpl" ) As ActiveBasic.Core._System_TypeForClass
+		' 基底クラスをスキャン
+		If Not IsNull( classTypeInfo.BaseType ) Then
+			Dim baseClassTypeInfo = Nothing As ActiveBasic.Core._System_TypeForClass
+			baseClassTypeInfo = classTypeInfo.BaseType As ActiveBasic.Core._System_TypeForClass
+			ScanObject( baseClassTypeInfo, pObject, pbMark )
 		End If
 
@@ -488,4 +487,15 @@
 
 		Return True
+	End Function
+	Function ScanObject(pObject As *Object, pbMark As *Byte) As Boolean
+		Dim classTypeInfo = Nothing As ActiveBasic.Core._System_TypeForClass
+		classTypeInfo = pObject->GetType() As ActiveBasic.Core._System_TypeForClass
+
+		If Object.ReferenceEquals( classTypeInfo, ActiveBasic.Core._System_TypeBase.selfTypeInfo ) Then
+			' TypeInfoクラスの場合はTypeBaseImplクラスとして扱う
+			classTypeInfo = _System_TypeBase_Search( "ActiveBasic.Core.TypeBaseImpl" ) As ActiveBasic.Core._System_TypeForClass
+		End If
+
+		Return ScanObject( classTypeInfo, pObject, pbMark )
 	End Function
 
