http://bugzilla.opensuse.org/show_bug.cgi?id=1094141
http://bugzilla.opensuse.org/show_bug.cgi?id=1094141#c5
--- Comment #5 from Martin Wilck
DJ9xxVIP::DJ9xxVIP ( SystemServices* pSS, BOOL proto ) : Printer(pSS, NUM_DJ6XX_FONTS, proto), PCL3acceptsDriverware(TRUE) {
m_bVIPPrinter = TRUE;
if (!proto && IOMode.bDevID) { bCheckForCancelButton = TRUE; constructor_error = VerifyPenInfo(); CERRCHECK; } else ePen = BOTH_PENS; // matches default mode
PCL3acceptsDriverware = IsPCL3DriverwareAvailable();
ModeCount = 0; pMode[ModeCount++] = new GrayModeDJ990(ulMapDJ600_CCM_K,PCL3acceptsDriverware); // Grayscale K
If VerifyPenInfo() returns an error, CERRCHECK is called, which means that the constructor returns without setting ModeCount = 0 and intializing the base class modes. The subclass constructor doesn't regard the same condition as an error, and continues happily:
DJGenericVIP::DJGenericVIP (SystemServices* pSS, BOOL proto) : DJ9xxVIP (pSS, proto) {
if (!proto && IOMode.bDevID) { bCheckForCancelButton = TRUE; constructor_error = VerifyPenInfo (); if (constructor_error != NO_ERROR) { constructor_error = NO_ERROR; ePen = BOTH_PENS; } } else ePen = BOTH_PENS; [...] pMode[ModeCount++] = new VIPFastDraftMode (); // Fast Draft
In this case, ModeCount is 2 before the VIPFastDraftMode() call, and pMode[0] and pMode[1] are NULL, as we observe in the core. This looks like an obvious hplip bug to me. The reason why you haven't seen it before must be related to VerifyPenInfo(). This function fails if the printer is inaccessible, or if no pens (cartridges?) are available, or if it's a printer model that needs all pens (cartridges?) installed to function. -- You are receiving this mail because: You are on the CC list for the bug.