SIGILL bei va_start
-
Hallo ich habe folgende Funktion:
ERRNO cGenericDevice::SendCommand(unsigned _Direction, unsigned _Command, ...) { m_Command.clear(); if (SendENQ()) { return ERR_NAK; } if (ReceiveACK()) { return ERR_NAK; } unsigned CommandSize; unsigned checksum = 0xff; m_Command.push_back(STX); m_Command.push_back(_Direction); CommandSize++; checksum -= _Direction; m_Command.push_back(_Command); CommandSize++; checksum -= _Command; va_list morebytes; va_start(morebytes, _Command); unsigned char tempbyte; for (;;) { tempbyte = va_arg(morebytes, unsigned char); if (tempbyte == '\0') { break; } m_Command.push_back(static_cast<unsigned>(tempbyte)); CommandSize++; checksum -= tempbyte; } va_end(morebytes); if (SendByte(CommandSize)) { return ERR_NAK; } checksum -= CommandSize; m_Command.push_back(checksum); m_Command.push_back(ETX); if (SendByteVector(m_Command)) { return ERR_NAK; } return ERR_OK; }Ich verwende g++-4.3. Das Programm bricht bei va_start mit einem SIGILL ab.
Ich kann in meinem Code aber keinen Fehler entdecken.
Was mach ich falsch?