This is a patch against OpenIsis 0.8.6 which fixes two problems
that I encountered while using data from my library:
- status field with value different that 0 should mean deleted record
  (it generated segfault without this added check) and
- if someone entered ^^ in data assert correctly stopped execution, however
  it's more useful (for me at least) to just quietly ignore that

diff -uw openisis-0.8.6/ldb.c openisis-0.8.6_fixed/ldb.c
--- openisis-0.8.6/ldb.c	2002-05-27 15:06:27.000000000 +0200
+++ openisis-0.8.6_fixed/ldb.c	2002-09-23 23:53:22.000000000 +0200
@@ -669,6 +669,7 @@
 
 	if ( rec[LMFR_STAT] ) {
 		log_msg( LOG_WARN, "found status %hd", rec[LMFR_STAT] );
+		if (rec[LMFR_STAT] =! 0) return NULL;	// about to be deleted
 		goto cleanok;
 	}
 
diff -uw openisis-0.8.6/lrec.c openisis-0.8.6_fixed/lrec.c
--- openisis-0.8.6/lrec.c	2002-06-24 13:54:48.000000000 +0200
+++ openisis-0.8.6_fixed/lrec.c	2002-09-23 23:58:46.000000000 +0200
@@ -289,12 +289,18 @@
 	for ( i=0; i<nfields; i++ ) {
 		/* p is on a hat */
 		r->field[ i ].tag = (unsigned char)*++p;
-		assert( p<e );
+//		assert( p<e );
+		if ( p < e ) {
 		r->field[ i ].val = ++p;
 		/* advance in buf */
 		while ( p<e && '^' != *p )
 			p++;
 		r->field[ i ].len = p - r->field[ i ].val;
+		} else {
+			// this means that input data has ^^
+			r->field[ i ].val = --p;
+			r->field[ i ].len = 0;
+		}
 	}
 
 	return r;
