annotate status.cpp @ 601:82d23418d867

Fix some fd leaks in the command-line binary Strictly speaking, they're not really leaks, because the only codepath that suffers from these leaks exits immediately afterwards. On the other hand, this fix makes valgrind on e.g. tests/0025 happier, going from 5 errors to none.
author mas01cr
date Fri, 14 Aug 2009 16:39:32 +0000
parents cc2b97d020b1
children
rev   line source
mas01cr@498 1 extern "C" {
mas01cr@498 2 #include "audioDB_API.h"
mas01cr@509 3 }
mas01cr@498 4 #include "audioDB-internals.h"
mas01cr@498 5
mas01cr@498 6 int audiodb_status(adb_t *adb, adb_status_t *status) {
mas01cr@498 7 /* FIXME: it would be nice to be able to test for "is this database
mas01cr@498 8 pointer valid", but at the moment we punt that to memory
mas01cr@498 9 discipline. */
mas01cr@498 10
mas01cr@498 11 unsigned dudCount = 0;
mas01cr@498 12 unsigned nullCount = 0;
mas01cr@498 13
mas01cr@498 14 for(unsigned k = 0; k < adb->header->numFiles; k++) {
mas01cr@498 15 /* FIXME: this bare "16" here reveals a problem (or maybe two).
mas01cr@498 16 * 16 here means the default value of the sequenceLength parameter
mas01cr@498 17 * initializer (both in C++ and corresponding to the "-l" or
mas01cr@498 18 * "--sequencelength" command-line argument).
mas01cr@498 19 *
mas01cr@498 20 * The problem is that the API as currently designed provides no
mas01cr@498 21 * way to pass that information in to this routine; there's no
mas01cr@498 22 * input parameter; nor is there in the SOAP version of this
mas01cr@498 23 * query. However, there /is/ a way to pass that information on
mas01cr@498 24 * the command-line -- though that codepath is completely
mas01cr@498 25 * untested. I can see that it might be useful to provide this
mas01cr@498 26 * information, but at present it's probably completely unused, so
mas01cr@498 27 * the compromise for now is to hardwire the 16.
mas01cr@498 28 */
mas01cr@498 29 if((*adb->track_lengths)[k] < 16) {
mas01cr@498 30 dudCount++;
mas01cr@498 31 if(!(*adb->track_lengths)[k]) {
mas01cr@498 32 nullCount++;
mas01cr@498 33 }
mas01cr@498 34 }
mas01cr@498 35 }
mas01cr@498 36
mas01cr@498 37 status->numFiles = adb->header->numFiles;
mas01cr@498 38 status->dim = adb->header->dim;
mas01cr@498 39 status->length = adb->header->length;
mas01cr@498 40 status->dudCount = dudCount;
mas01cr@498 41 status->nullCount = nullCount;
mas01cr@498 42 status->flags = adb->header->flags;
mas01cr@498 43 status->data_region_size = adb->header->timesTableOffset - adb->header->dataOffset;
mas01cr@498 44
mas01cr@498 45 return 0;
mas01cr@498 46 }
mas01cr@498 47