Operating System: XP SP2
System RAM: not much
System CPU: an older one
Hard Drive Size: very small
Computer Make or Vendor: generic
What caused the bug: developer
Bug Severity: not noticeable unless fixed
Email address: vortic@sourceforge.net
Compiler/IDE: vc8, VC++2005 Express
In Pixels.h, lines 424-432, the great highlighting
features of the VC++2005 Express IDE indicate that the
code in the if clause, and not the else clause is "active":
#if (__BORLANDC__ < 0x0560) || (__BORLANDC__ >= 0x0580)
# define IMTRAITS SysPixelType::Traits
# define SysPixelTypeTraits SysPixelType::Traits
# define GrayPixelTypeTraits SysGrayscalePixelType::Traits
#else
# define IMTRAITS ImageBits::Traits
# define SysPixelTypeTraits SysPixelType::Traits
# define GrayPixelTypeTraits SysGrayscalePixelType::Traits
#endif
Evidently, we need to check first if __BORLANDC__ is
defined. Oddly, with the code in the if clause active,
everything compiles/build fine. If I check for
__BORLANDC__ being defined, the code in the else clause
is active (as expected), but I get compile errors in
AbstractImage.cpp
//modified code
#if defined(__BORLANDC__) && ((__BORLANDC__ < 0x0560)
|| (__BORLANDC__ >= 0x0580))
# define IMTRAITS SysPixelType::Traits
# define SysPixelTypeTraits SysPixelType::Traits
# define GrayPixelTypeTraits SysGrayscalePixelType::Traits
#else
# define IMTRAITS ImageBits::Traits
# define SysPixelTypeTraits SysPixelType::Traits
# define GrayPixelTypeTraits SysGrayscalePixelType::Traits
#endif
I'm not sure what VS6 and vc7/7.1 is doing with this,
so I'll let you decide.