obsolete

These are the patches that used to be required to build trunk with VC6 but are no longer necessary.

VC6 doesn't recognise inner classes as friends of outer classes and thus failed to compile HashKey, nsScriptEventHandlerOwnerTearoff or gfxSparseBitSet correctly, however HashDouble has now been removed and nsScriptEventHandlerOwnerTearoff is now a separate class so this friend declaration is now required anyway, while gfxSparseBitSet was moved from gfxWindowsFonts.h to gfxFontUtils.h:

VC6 only allows a simple type name in a virtual method override. Furthermore it confuses inner classes that have the same simple name. Generated Query Interface required these changes but it has since been backed out:

VC6 incorrectly thinks that references to static members of multiply derived classes are ambiguous. However the nsAccessibleEventData code needs to port to the branch so the patch has since been applied on trunk.

VC6 doesn't allow const members of a POD type, and thus failed to compile the initializers for UnitInfo. Fortunately this also confuses the VC7.1 optimizer which is why this patch has since been applied:

VC6 was unable to compile an nsTArray<nsCOMPtr<nsIFile> > because it appeared to be confused by the use of unions inside the various nsCOMPtr methods. This was only a problem when compiling tests with --enable-debug. However the use of unions was itself an unsafe fix to a strict aliasing fix and this patch has now been applied as the correct fix:

VC6 won't let you return a value from a void function. However the nsXFormsContextContainer code needs to port to the branch so the first patch has since been applied on trunk, while the gfxWindowsFonts change has since been obsoleted by further changes to windows font handling:

VC6 only allows array-style initializers for POD types, so it fails to compile the initializers for EudoraDefaultLabels, nsARIAMap or SuspectClosure. The indentation of the nsEudoraImport code has since been changed; the type of nsARIAMap has changed, while the xpcwrappednativescope code has been changed so that it works with the Solaris compiler.

VC6 uses old-style scoping rules for variables declared in for loops, which makes it unable to compile several functions. However the BasicTableLayoutStrategy loops have been altered, the nsSVGElement changes have since been applied independently while some of the other loops have since been moved or removed:

VC6 only allows a simple type name in a virtual method override. Furthermore it confuses inner classes that have the same simple name. This means that it can't inherit type names. This required changes to nsCycleCollectionParticipant.h which has been moved from xpcom/base to xpcom/glue, and one of the changes to nsHTMLSelectElement has been moved from the .cpp to the .h file. Another patch that required this has (temporarily?) been backed out:

VC6 thinks that typename *varname( is the beginning of a function pointer declaration, rather than a C++ style constructor. This required changes to nsExternalHelperAppService.cpp that have since been removed:

VC6 can't specialise a template with a constant. Removal of the specialisation used to require the changing of an assumption, but the code has since been fixed to allocate reasonably in more cases, which includes this edge case: