cmMidiOsx.c: Fixed bug in va_list usage in _cmMpError() which showed

up in spat-lab port.
This commit is contained in:
kevin 2013-09-05 15:57:31 -07:00
parent caa4b558aa
commit a204e9ad1c

View File

@ -58,13 +58,18 @@ cmMpRoot* _cmMpRtPtr = NULL;
cmMpRC_t _cmMpError( cmErr_t* errPtr, cmMpRC_t rc, OSStatus err, const char* fmt, ... )
{
va_list vl;
unsigned n0 = vsnprintf(NULL,0,fmt,vl);
va_list vl0;
va_list vl1;
va_start(vl0,fmt);
va_copy(vl1,vl0);
unsigned n0 = vsnprintf(NULL,0,fmt,vl0);
unsigned n1 = 0;
unsigned n2 = 0;
const char* fmt2 = "OS Status:%i";
va_end(vl0);
va_start(vl,fmt);
if( err != noErr )
n1 = snprintf(NULL,0,fmt2,err);
@ -72,17 +77,14 @@ cmMpRC_t _cmMpError( cmErr_t* errPtr, cmMpRC_t rc, OSStatus err, const char* fmt
unsigned bufCharCnt = n0 + n1;
char buf[ bufCharCnt + 1];
va_end(vl);
va_start(vl,fmt);
vsnprintf(buf,n0,fmt,vl);
vsnprintf(buf,n0,fmt,vl1);
n2 = strlen(buf);
snprintf(buf+n2,bufCharCnt-n2,fmt2,err);
buf[bufCharCnt]=0;
cmErrMsg(errPtr,rc,buf);
va_end(vl);
va_end(vl1);
return rc;
}
@ -223,8 +225,9 @@ cmMpRC_t _cmMpGetEntityUniqueIdArray( MIDIEntityRef mer, SInt32* idArray, unsign
offline = 1;
if((err = MIDIObjectGetIntegerProperty( epr, kMIDIPropertyOffline, &offline)) != noErr )
{
rc= _cmMpError(errPtr,kSysErrMpRC,err,"Get online status on %s endpoint %i failed.",dirLabel,pi);
goto errLabel;
_cmMpError(errPtr,kSysErrMpRC,err,"Get online status on %s endpoint %i failed.",dirLabel,pi);
//goto errLabel; kpl 09/05/13 - report error and fall through and report the device as 'offline'.
// This should be a warning rather than a error.
}
if( offline )