from the 2.01 beta?
void PCintPort::addPin(uint8_t arduinoPin, uint8_t mode,PCIntvoidFuncPtr userFunc)
{
// Create pin p: fill in the data. This is no longer in another method (saves some bytes).
PCintPin* p=new PCintPin;
p->arduinoPin=arduinoPin;
p->mode = mode;
p->next=NULL;
p->mask = digitalPinToBitMask(arduinoPin); // the mask
#ifdef DEBUG
Serial.print("createPin. pin given: "); Serial.print(arduinoPin, DEC);
int addr = (int) p;
Serial.print(" instance addr: "); Serial.println(addr, HEX);
Serial.print("userFunc addr: "); Serial.println((int)p->PCintFunc, HEX);
#endif
// pin created
if (p == NULL) return;
The test for p == NULL should be directly after PCintPin* p=new PCintPin;
as one cannot access the members of p when p == NULL
void PCintPort::detachInterrupt(uint8_t arduinoPin)
{
PCintPort *port;
#ifdef DEBUG
Serial.print("detachInterrupt: "); Serial.println(arduinoPin, DEC);
#endif
uint8_t portNum = digitalPinToPort(arduinoPin);
if (portNum == NOT_A_PORT) return;
port=lookupPortNumToPort(portNum);
if (port == NULL) // <<<<<<<<<<<<<<<<<<<<<<< handle error? from code point it is possible.
port->delPin(digitalPinToBitMask(arduinoPin));
}