From: Adrian S. <a3s...@us...> - 2005-03-30 12:48:05
|
Update of /cvsroot/sblim/sfcb In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26392 Modified Files: classProvider.c Log Message: Class provider now gracefully skipping invalidly formated class files - I hope so Index: classProvider.c =================================================================== RCS file: /cvsroot/sblim/sfcb/classProvider.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- classProvider.c 30 Mar 2005 12:30:51 -0000 1.5 +++ classProvider.c 30 Mar 2005 12:47:18 -0000 1.6 @@ -168,11 +168,16 @@ char *cn; if (hdr.type!=HDR_Class) { - fprintf(stderr,"--- newClassRegister(): not a class record"); - abort(); + fprintf(stderr,"--- %s contains non-class record(s) - directory skipped\n",fin); + return NULL; } buf = (char *) malloc(hdr.size); + if (buf==NULL) { + fprintf(stderr,"--- %s contains record(s) that are too long - directory skipped\n",fin); + return NULL; + } + total+=hdr.size; *((ClObjectHdr *) buf) = hdr; @@ -189,8 +194,8 @@ } } else { - fprintf(stderr,"--- newClassRegister(): failed to read next class"); - abort(); + fprintf(stderr,"--- %s contains invalid record(s) - directory skipped\n",fin); + return NULL; } } // printf("--- %d Association classes\n", assocs); @@ -225,8 +230,11 @@ strcpy(n,dn); strcat(n,"/"); strcat(n,de->d_name); - ns->ft->put(ns, n+nsBaseLen, cr=newClassRegister(n)); - gatherNameSpaces(n,ns); + cr=newClassRegister(n); + if (cr) { + ns->ft->put(ns, n+nsBaseLen, cr); + gatherNameSpaces(n,ns); + } } } closedir(dir); |