https://bugs.kde.org/show_bug.cgi?id=382941
Matthias Schwarzott <z...@gentoo.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |z...@gentoo.org --- Comment #7 from Matthias Schwarzott <z...@gentoo.org> --- Commit 7f0be6a33b8260f7789c6aeed58be8d1c844229a seems to have broken detection of the burn device / existing empty media to burn on. I get a lot of lines printing "Invalid Byte!" the other errors: [...] Invalid Byte! (K3b::Device::Device) "/dev/sr0" : Missing modepage 0x05 data. (K3b::Device::Device) "/dev/sr0" : Cannot check write modes. [...] Looking at the code: from{2,4}Byte seems to be used to read 16/32bit big endian integer values from raw data. So calling strlen is just wrong. This leads to rejecting valid byte-streams containing zero bytes. Second: I suggest to improve the unit test with a test parsing good 16 and 32bit values (at least one with all values != 0 and one where 0 values are part). e.g. for from2Byte + unsigned const char buf0[] = { 0x00, 0x00 }; + QCOMPARE(K3b::Device::from2Byte(buf0), (quint16)0x0000); + unsigned const char buf1[] = { 0x00, 0x70 }; + QCOMPARE(K3b::Device::from2Byte(buf1), (quint16)0x0070); + unsigned const char buf2[] = { 0x05, 0x00 }; + QCOMPARE(K3b::Device::from2Byte(buf2), (quint16)0x0500); + unsigned const char buf3[] = { 0xF0, 0x03 }; + QCOMPARE(K3b::Device::from2Byte(buf2), (quint16)0xF003); the same should be done for from4Byte + unsigned const char buf0[] = { 0x00, 0x00, 0x00, 0x00 }; + QCOMPARE(K3b::Device::from4Byte(buf0), (quint32)0x00000000); + unsigned const char buf0[] = { 0x00, 0x00, 0x00, 0x01 }; + QCOMPARE(K3b::Device::from4Byte(buf0), (quint32)0x00000001); + unsigned const char buf0[] = { 0x12, 0x34, 0x56, 0x78 }; + QCOMPARE(K3b::Device::from4Byte(buf0), (quint32)0x12345678); -- You are receiving this mail because: You are watching all bug changes.