Changeset 7060

Show
Ignore:
Timestamp:
27/10/10 14:42:15 (19 months ago)
Author:
westram
Message:
Location:
trunk
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • trunk/AWT/AWT_query_and_functions.cxx

    r6867 r7060  
    11461146                                bool                  this_hit    = (match_field == AQFT_ALL_FIELDS); 
    11471147 
    1148                                 char *data = gb_key ? GB_read_as_string(gb_key) : strdup(""); // assume "" for explicit fields that don't exist 
    1149                                 awt_assert(data); 
     1148                                char *data       = gb_key ? GB_read_as_string(gb_key) : strdup(""); // assume "" for explicit fields that don't exist 
     1149                                if (!data) error = GB_await_error(); 
    11501150 
    11511151                                while (data) { 
     
    12521252                    else CLEAR_QUERIED(gb_item, cbs); 
    12531253 
    1254                     if (aw_status(searched_count++/double(item_count))) error = "aborted"; 
     1254                    if (error) { 
     1255                        error = GB_failedTo_error("query", GBT_get_name(gb_item), error); 
     1256                    } 
     1257                    else { 
     1258                        if (aw_status(searched_count++/double(item_count))) error = "aborted"; 
     1259                    } 
    12551260                } 
    12561261            } 
  • trunk/PROBE/PT_io.cxx

    r6813 r7060  
    174174 
    175175static char *probe_read_string_append_point(GBDATA *gb_data, int *psize) { 
    176     long len = GB_read_string_count(gb_data); 
     176    long  len = GB_read_string_count(gb_data); 
    177177    char *data = GB_read_string(gb_data); 
    178178 
    179     if (data[len - 1] != '.') { 
    180         char *buffer = (char *) malloc(len + 2); 
    181         strcpy(buffer, data); 
    182         buffer[len++] = '.'; 
    183         buffer[len] = 0; 
    184         freeset(data, buffer); 
    185     } 
    186     *psize = len; 
     179    if (data) { 
     180        if (data[len - 1] != '.') { 
     181            char *buffer = (char *) malloc(len + 2); 
     182            strcpy(buffer, data); 
     183            buffer[len++] = '.'; 
     184            buffer[len] = 0; 
     185            freeset(data, buffer); 
     186        } 
     187        *psize = len; 
     188    } 
     189    else { 
     190        *psize = 0; 
     191    } 
    187192    return data; 
    188193} 
     
    253258            } 
    254259            else { 
    255                 { 
    256                     int   hsize; 
    257                     char *data = probe_read_string_append_point(gb_data, &hsize); 
     260                int   hsize; 
     261                char *data = probe_read_string_append_point(gb_data, &hsize); 
     262 
     263                if (!data) { 
     264                    GB_ERROR error = GB_await_error(); 
     265                    fprintf(stderr, "Could not read data in '%s' for species '%s'\n(Reason: %s)\n", 
     266                            psg.alignment_name, pid.name, error); 
     267                    data_missing++; 
     268                } 
     269                else { 
    258270                    pid.checksum = GB_checksum(data, hsize, 1, ".-"); 
    259                     int   size = probe_compress_sequence(data, hsize); 
     271                    int size    = probe_compress_sequence(data, hsize); 
    260272 
    261273                    pid.data = GB_memdup(data, size); 
    262274                    pid.size = size; 
    263  
    264                     free(data); 
     275                     
     276                    count ++; 
     277                    if (count%10 == 0) { 
     278                        if (count%500) fputc('.', stdout); 
     279                        else printf(".%6i (%5.1f%%)\n", count, ((double)count/species_count)*100); 
     280                        fflush(stdout); 
     281                    } 
     282 
    265283                } 
    266  
    267                 count ++; 
    268                 if (count%10 == 0) { 
    269                     if (count%500) fputc('.', stdout); 
    270                     else printf(".%6i (%5.1f%%)\n", count, ((double)count/species_count)*100); 
    271                     fflush(stdout); 
    272                 } 
     284                free(data); 
    273285            } 
    274286        }