@@ -287,15 +287,14 @@ big_file_open_block(BigFile * bf, BigBlock * block, const char * blockname)
287287int
288288big_file_create_block (BigFile * bf , BigBlock * block , const char * blockname , const char * dtype , int nmemb , int Nfile , const size_t fsize [])
289289{
290- RAISEIF (0 != _big_file_mksubdir_r (bf -> basename , blockname ),
291- ex_subdir ,
292- NULL );
290+ if (0 != _big_file_mksubdir_r (bf -> basename , blockname )) {
291+ _big_file_raise (NULL , __FILE__ , __LINE__ );
292+ return -1 ;
293+ }
293294 char * basename = _path_join (bf -> basename , blockname );
294295 int rt = _big_block_create (block , basename , dtype , nmemb , Nfile , fsize );
295296 free (basename );
296297 return rt ;
297- ex_subdir :
298- return -1 ;
299298}
300299
301300int
@@ -814,9 +813,10 @@ big_block_read(BigBlock * bb, BigBlockPtr * ptr, BigArray * array)
814813 FILE * fp = NULL ;
815814 ptrdiff_t toread = 0 ;
816815
817- RAISEIF (chunkbuf == NULL ,
818- ex_malloc ,
819- "Not enough memory for chunkbuf" );
816+ if (chunkbuf == NULL ) {
817+ _big_file_raise ("Not enough memory for chunkbuf" , __FILE__ , __LINE__ );
818+ return -1 ;
819+ }
820820
821821 big_array_init (& chunk_array , chunkbuf , bb -> dtype , 2 , dims , NULL );
822822 big_array_iter_init (& array_iter , array );
@@ -883,7 +883,6 @@ big_block_read(BigBlock * bb, BigBlockPtr * ptr, BigArray * array)
883883ex_open :
884884ex_eof :
885885 free (chunkbuf );
886- ex_malloc :
887886 return -1 ;
888887}
889888
@@ -908,9 +907,10 @@ big_block_write(BigBlock * bb, BigBlockPtr * ptr, BigArray * array)
908907 ptrdiff_t towrite = 0 ;
909908 FILE * fp ;
910909
911- RAISEIF (chunkbuf == NULL ,
912- ex_malloc ,
913- "not enough memory for chunkbuf of size %d bytes" , CHUNK_BYTES );
910+ if (chunkbuf == NULL ) {
911+ _big_file_raise ("not enough memory for chunkbuf of size %d bytes" , __FILE__ , __LINE__ , CHUNK_BYTES );
912+ return -1 ;
913+ }
914914
915915 big_array_init (& chunk_array , chunkbuf , bb -> dtype , 2 , dims , NULL );
916916 big_array_iter_init (& array_iter , array );
@@ -1494,17 +1494,30 @@ attrset_read_attr_set_v2(BigAttrSet * attrset, const char * basename)
14941494 fseek (fattr , 0 , SEEK_END );
14951495 long size = ftell (fattr );
14961496 /*ftell may fail*/
1497- RAISEIF (size < 0 , ex_init , "ftell error: %s" ,strerror (errno ));
1497+ if (size < 0 ) {
1498+ _big_file_raise ("ftell error: %s" , __FILE__ , __LINE__ , strerror (errno ));
1499+ fclose (fattr );
1500+ return -1 ;
1501+ }
14981502 char * buffer = (char * ) malloc (size + 1 );
1499- RAISEIF (!buffer , ex_init , "Could not allocate memory for buffer: %ld bytes" ,size + 1 );
15001503 unsigned char * data = (unsigned char * ) malloc (size + 1 );
1504+ RAISEIF (!buffer , ex_init , "Could not allocate memory for buffer: %ld bytes" ,size + 1 );
15011505 RAISEIF (!data , ex_data , "Could not allocate memory for data: %ld bytes" ,size + 1 );
15021506 fseek (fattr , 0 , SEEK_SET );
15031507 RAISEIF (size != fread (buffer , 1 , size , fattr ),
15041508 ex_read_file ,
15051509 "Failed to read attribute file\n" );
15061510 buffer [size ] = 0 ;
1507-
1511+ if (0 ) { /* Just here for the error cleanups*/
1512+ ex_read_file :
1513+ attrset -> dirty = 0 ;
1514+ free (data );
1515+ ex_data :
1516+ free (buffer );
1517+ ex_init :
1518+ fclose (fattr );
1519+ return -1 ;
1520+ }
15081521 /* now parse the v2 attr file.*/
15091522 long i = 0 ;
15101523 #define ATTRV2_EXPECT (variable ) while(_isblank(buffer[i])) i++; \
@@ -1522,11 +1535,15 @@ attrset_read_attr_set_v2(BigAttrSet * attrset, const char * basename)
15221535 int nmemb = atoi (rawlength );
15231536 int itemsize = big_file_dtype_itemsize (dtype );
15241537
1525- RAISEIF (nmemb * itemsize * 2 != strlen (rawdata ),
1526- ex_parse_attr ,
1527- "NMEMB and data mismiatch: %d x %d (%s) * 2 != %d" ,
1528- nmemb , itemsize , dtype , strlen (rawdata ));
1529-
1538+ if (nmemb * itemsize * 2 != strlen (rawdata )){
1539+ _big_file_raise ("NMEMB and data mismatch: %d x %d (%s) * 2 != %d" ,
1540+ __FILE__ , __LINE__ , nmemb , itemsize , dtype , strlen (rawdata ));
1541+ attrset -> dirty = 0 ;
1542+ free (data );
1543+ free (buffer );
1544+ fclose (fattr );
1545+ return -1 ;
1546+ }
15301547 int j , k ;
15311548 for (k = 0 , j = 0 ; k < nmemb * itemsize ; k ++ , j += 2 ) {
15321549 char buf [3 ];
@@ -1536,26 +1553,19 @@ attrset_read_attr_set_v2(BigAttrSet * attrset, const char * basename)
15361553 unsigned int byte = strtoll (buf , NULL , 16 );
15371554 data [k ] = byte ;
15381555 }
1539- RAISEIF (0 != attrset_set_attr (attrset , name , data , dtype , nmemb ),
1540- ex_set_attr ,
1541- NULL );
1556+ if (0 != attrset_set_attr (attrset , name , data , dtype , nmemb )) {
1557+ attrset -> dirty = 0 ;
1558+ free (data );
1559+ free (buffer );
1560+ fclose (fattr );
1561+ return -1 ;
1562+ }
15421563 }
15431564 fclose (fattr );
15441565 free (data );
15451566 free (buffer );
15461567 attrset -> dirty = 0 ;
15471568 return 0 ;
1548-
1549- ex_read_file :
1550- ex_parse_attr :
1551- ex_set_attr :
1552- attrset -> dirty = 0 ;
1553- free (data );
1554- ex_data :
1555- free (buffer );
1556- ex_init :
1557- fclose (fattr );
1558- return -1 ;
15591569}
15601570static int
15611571attrset_write_attr_set_v2 (BigAttrSet * attrset , const char * basename )
@@ -1575,7 +1585,7 @@ attrset_write_attr_set_v2(BigAttrSet * attrset, const char * basename)
15751585 int ldata = itemsize * a -> nmemb ;
15761586
15771587 char * rawdata = (char * ) malloc (ldata * 2 + 1 );
1578- unsigned char * adata = (unsigned char * ) a -> data ;
1588+ char * adata = (char * ) a -> data ;
15791589 int j , k ;
15801590 for (j = 0 , k = 0 ; k < ldata ; k ++ , j += 2 ) {
15811591 rawdata [j ] = conv [adata [k ] / 16 ];
@@ -1695,19 +1705,16 @@ static int
16951705attrset_remove_attr (BigAttrSet * attrset , const char * attrname )
16961706{
16971707 BigAttr * attr = attrset_lookup_attr (attrset , attrname );
1698- RAISEIF (attr == NULL ,
1699- ex_notfound ,
1700- "Attribute name '%s' is not found." , attrname
1701- )
1708+ if (attr == NULL ) {
1709+ _big_file_raise ( "Attribute name '%s' is not found." , __FILE__ , __LINE__ , attrname );
1710+ return -1 ;
1711+ }
17021712 ptrdiff_t ind = attr - attrset -> attrlist ;
17031713 memmove (& attrset -> attrlist [ind ], & attrset -> attrlist [ind + 1 ],
17041714 (attrset -> listused - ind - 1 ) * sizeof (BigAttr ));
17051715 attrset -> listused -= 1 ;
17061716
17071717 return 0 ;
1708-
1709- ex_notfound :
1710- return -1 ;
17111718}
17121719
17131720static BigAttr *
0 commit comments