# HG changeset patch # User mas01cr # Date 1226503410 0 # Node ID 3b6cd1dfbddbad4a4770f8b03519bebe47893d4e # Parent 521812d63516dd11d9ade608dfca8ee4a3d589e9 deal with the write() calls in implementation of the API, too. (Can't use CHECKED_WRITE() because audioDB::error() is out of scope, so we have to do it the old-fashioned way.) diff -r 521812d63516 -r 3b6cd1dfbddb audioDB.cpp --- a/audioDB.cpp Wed Nov 12 15:23:29 2008 +0000 +++ b/audioDB.cpp Wed Nov 12 15:23:30 2008 +0000 @@ -993,15 +993,14 @@ const char *argv[22]; int argvctr=0; unsigned int i=0; - int retval=0; char tempfeaturename[]="tempfeatureXXXXXX"; char temppowername[]="temppowerXXXXXX"; char tempkeyname[]="tempkeyXXXXXX"; char temptimesname[]="temptimesXXXXXX"; - int tempfeaturefd=0; - int temppowerfd=0; - int tempkeyfd=0; - int temptimesfd=0; + int tempfeaturefd = -1; + int temppowerfd = -1; + int tempkeyfd = -1; + int temptimesfd = -1; int flags[4]={0}; int apierror=0; @@ -1029,77 +1028,43 @@ /* make four temp files */ - tempfeaturefd=mkstemp(tempfeaturename); - if (tempfeaturefd !=-1){ + if ((tempfeaturefd = mkstemp(tempfeaturename)) == -1) + goto error; + if ((temppowerfd = mkstemp(temppowername)) == -1) + goto error; + if ((tempkeyfd=mkstemp(tempkeyname)) == -1) + goto error; + if ((temptimesfd=mkstemp(temptimesname)) == -1) + goto error; - temppowerfd=mkstemp(temppowername); - if (temppowerfd !=-1){ - - tempkeyfd=mkstemp(tempkeyname); - if (tempkeyfd !=-1){ - - temptimesfd=mkstemp(temptimesname); - if (temptimesfd !=-1){ - - } else { - retval=-1; - close(tempkeyfd); - remove(tempkeyname); - close(temppowerfd); - remove(temppowername); - close(tempfeaturefd); - remove(tempfeaturename); - } - - } else { - retval=-1; - close(temppowerfd); - remove(temppowername); - close(tempfeaturefd); - remove(tempfeaturename); - } - - } else { - retval=-1; - close(tempfeaturefd); - remove(tempfeaturename); - } - - } else { - retval=-1; - } - - - - - - if (retval == -1){ - return -1; - } - /* Ok, so we should have a working set of files to write to */ /* I'm going to assume that the same format is kept for all structs in the array */ /* That is, each struct should be correctly formed, and contain at least a features file, because I'm just going to pass the terms along to the text files */ - for (i=0; i