NewSoftSerial Library: An AFSoftSerial update

I'm having some trouble with the NewSoftSerial library. Serial receives are hanging the program. It seems like single characters received very slowly will work fine. But as soon as multiple characters are received quickly, the program freezes. Sending seems to work without any problems.

Here's some sample code. It's basically a baud rate converter. The hardware UART is configured for 9600 baud and the NewSoftSerial instance is set for 2400 baud (I've tried other speeds and it made no difference on the locking). Any data received by the hardware UART is sent out through NewSoftSerial and vice versa.

#include <NewSoftSerial.h>
#define rxPin 2
#define txPin 3
#define ledPin 13

boolean ledState = false;
int counter = 255;            // To slow down the LED blinking
byte incomingByte = 0;

NewSoftSerial nss(rxPin, txPin);

void setup()                    // run once, when the sketch starts
{
  Serial.begin(9600);
  nss.begin(2400);
  pinMode(ledPin, OUTPUT);      // sets the digital pin as output
  digitalWrite(ledPin,ledState);
  delay(2000);
}

void loop()                     // run over and over again
{
  
// Blink the LED on pin 13 just to show we're alive

  if (counter > 0) {
    counter-=1;
  } else {
    ledState = ! ledState;
    digitalWrite(ledPin,ledState);
    counter=255;
  }

// Read from the hardware UART.
// If any data is available, write it out through the software serial

  if (Serial.available() > 0) {
    incomingByte = Serial.read();
    nss.print(incomingByte);
  }

// Read from software serial.
// If any data is available, write it out through the hardware UART
  
  if (nss.available() > 0) {
    incomingByte = nss.read();
    Serial.print(incomingByte);
  }

  delay(1);                  
}

I thought there might be an interrupt conflict between the hardware UART and the NewSoftSerial but commenting out the hardware Serial code doesn't prevent lockups. Even this simplified code will freeze after a few characters are received rapidly by NewSoftSerial.

#include <NewSoftSerial.h>
#define rxPin 2
#define txPin 3
#define ledPin 13

boolean ledState = false;
int counter = 255;            // To slow down the LED blinking

NewSoftSerial nss(rxPin, txPin);

void setup()                    // run once, when the sketch starts
{
  nss.begin(2400);
  pinMode(ledPin, OUTPUT);      // sets the digital pin as output
  digitalWrite(ledPin,ledState);
  delay(2000);
}

void loop()                     // run over and over again
{
  
// Blink the LED on pin 13 just to show we're alive

  if (counter > 0) {
    counter-=1;
  } else {
    ledState = ! ledState;
    digitalWrite(ledPin,ledState);
    counter=255;
  }
  
  delay(1);                  
}

Notice that I'm not even calling any NewSoftSerial functions (except for the begin) or even using the hardware Serial at all. Actually the program isn't doing anything but initializing the NewSoftSerial instance and blinking a LED.

Hopefully this is enough info to help find the problem as I'd really like to use this library.

I forgot to add that this is with Arduino 0012 running on a G5 (PPC) Mac. I downloaded the latest NewSoftSerial library today.