From mboxrd@z Thu Jan 1 00:00:00 1970 From: Clemens Ladisch Subject: [PATCH] plugin_ops.h fixes Date: Mon, 08 Jul 2002 11:02:25 +0200 Sender: alsa-devel-admin@lists.sourceforge.net Message-ID: <3D295521.A14C950@ladisch.de> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="Boundary_(ID_3fPvCjR7ahDAWhBVi+fpBA)" Return-path: Errors-To: alsa-devel-admin@lists.sourceforge.net List-Help: List-Post: List-Subscribe: , List-Unsubscribe: , List-Archive: To: alsa-devel@lists.sourceforge.net List-Id: alsa-devel@alsa-project.org This is a multi-part message in MIME format. --Boundary_(ID_3fPvCjR7ahDAWhBVi+fpBA) Content-type: text/plain; charset=us-ascii Content-transfer-encoding: 7BIT This macro in plugin_ops.h #ifdef __i386__ #define _get_triple_le(ptr) (*(u_int32_t*)(ptr) & 0xffffff) tries to access four bytes through the pointer. If the three bytes of valid data are at the end of a page and the next page isn't mapped, this results in an exception. The companion macro #define _get_triple_be(ptr) (bswap_32(*(u_int32_t*)(ptr)) & 0xffffff) suffers from the same problem, and, additionally, is wrong (it lacks ">> 8" after the bswap). I fixed both macros by removing them. :-) There is a typo in get16_1230_B2. The put16_labels array is declared as having 128 elements instead of 16. The gets_* code doesn't correctly extend the sign of the value in every case. put_12_A1 should have been put_12_29, and the codes for put_0123_* use the nonexistent macros as_s24/as_u24. (This doesn't really matter as put_* isn't used anyway.) The _norms function appears to be badly broken (_min and _max interchanged, using 32/64 bits for 24/32 bit values). I didn't attempt to fix it as it isn't used, either. And the summing/normalization code in pcm_route.c treats the sample as if it were unsigned. Clemens --Boundary_(ID_3fPvCjR7ahDAWhBVi+fpBA) Content-type: application/octet-stream; name=lib-pcm.diff Content-transfer-encoding: BASE64 Content-disposition: attachment; filename=lib-pcm.diff SW5kZXg6IHNyYy9wY20vcGNtX3JvdXRlLmMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS Q1MgZmlsZTogL2N2c3Jvb3QvYWxzYS9hbHNhLWxpYi9zcmMvcGNtL3BjbV9yb3V0 ZS5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjY1CmRpZmYgLXUgLXIxLjY1IHBj bV9yb3V0ZS5jCi0tLSBzcmMvcGNtL3BjbV9yb3V0ZS5jCTI2IEp1biAyMDAyIDAy OjA0OjEyIC0wMDAwCTEuNjUKKysrIHNyYy9wY20vcGNtX3JvdXRlLmMJOCBKdWwg MjAwMiAwODowODo0OCAtMDAwMApAQCAtMzQ0LDcgKzM0NCw3IEBACiAJCQkJc3Vt LmFzX3NpbnQzMiArPSBzYW1wbGU7CiAJCQlnb3RvIGFmdGVyX3N1bTsKIAkJYWRk X2ludDY0X2F0dDoKLQkJCXN1bS5hc19zaW50NjQgKz0gKHVfaW50NjRfdCkgc2Ft cGxlICogdHRwLT5hc19pbnQ7CisJCQlzdW0uYXNfc2ludDY0ICs9IChpbnQ2NF90 KXNhbXBsZSAqIHR0cC0+YXNfaW50OwogCQkJZ290byBhZnRlcl9zdW07CiAJCWFk ZF9pbnQ2NF9ub2F0dDoKIAkJCWlmICh0dHAtPmFzX2ludCkKQEAgLTQwOCw4ICs0 MDgsMTAgQEAKIAogCW5vcm1faW50NjRfMF9ub2F0dDoKIAlub3JtX2ludDoKLQkJ aWYgKHN1bS5hc19zaW50NjQgPiAodV9pbnQzMl90KTB4ZmZmZmZmZmYpCi0JCQlz YW1wbGUgPSAodV9pbnQzMl90KTB4ZmZmZmZmZmY7CisJCWlmIChzdW0uYXNfc2lu dDY0ID49IDB4N2ZmZmZmZmZMTCkKKwkJCXNhbXBsZSA9IDB4N2ZmZmZmZmY7CisJ CWVsc2UgaWYgKHN1bS5hc19zaW50NjQgPD0gLTB4ODAwMDAwMDBMTCkKKwkJCXNh bXBsZSA9IDB4ODAwMDAwMDA7CiAJCWVsc2UKIAkJCXNhbXBsZSA9IHN1bS5hc19z aW50NjQ7CiAJCWdvdG8gYWZ0ZXJfbm9ybTsKQEAgLTQyNyw4ICs0MjksMTAgQEAK IAlub3JtX2Zsb2F0XzA6CiAJbm9ybV9mbG9hdDoKIAkJc3VtLmFzX2Zsb2F0ID0g Zmxvb3Ioc3VtLmFzX2Zsb2F0ICsgMC41KTsKLQkJaWYgKHN1bS5hc19mbG9hdCA+ ICh1X2ludDMyX3QpMHhmZmZmZmZmZikKLQkJCXNhbXBsZSA9ICh1X2ludDMyX3Qp MHhmZmZmZmZmZjsKKwkJaWYgKHN1bS5hc19mbG9hdCA+PSAyMTQ3NDgzNjQ3LjBG KQorCQkJc2FtcGxlID0gMHg3ZmZmZmZmZjsKKwkJZWxzZSBpZiAoc3VtLmFzX2Zs b2F0IDw9IC0yMTQ3NDgzNjQ4LjBGKQorCQkJc2FtcGxlID0gMHg4MDAwMDAwMDsK IAkJZWxzZQogCQkJc2FtcGxlID0gc3VtLmFzX2Zsb2F0OwogCQlnb3RvIGFmdGVy X25vcm07CkluZGV4OiBzcmMvcGNtL3BsdWdpbl9vcHMuaAo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9hbHNhL2Fsc2EtbGliL3NyYy9wY20v cGx1Z2luX29wcy5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEzCmRpZmYgLXUg LXIxLjEzIHBsdWdpbl9vcHMuaAotLS0gc3JjL3BjbS9wbHVnaW5fb3BzLmgJMjYg SnVuIDIwMDIgMDI6MDQ6MTIgLTAwMDAJMS4xMworKysgc3JjL3BjbS9wbHVnaW5f b3BzLmgJOCBKdWwgMjAwMiAwODowODo0OCAtMDAwMApAQCAtNDgsMTMgKzQ4LDgg QEAKICNkZWZpbmUgYXNfZmxvYXRjKHB0cikgKCooY29uc3QgZmxvYXRfdCopKHB0 cikpCiAjZGVmaW5lIGFzX2RvdWJsZWMocHRyKSAoKihjb25zdCBkb3VibGVfdCop KHB0cikpCiAKLSNpZmRlZiBfX2kzODZfXwotI2RlZmluZSBfZ2V0X3RyaXBsZV9s ZShwdHIpICgqKHVfaW50MzJfdCopKHB0cikgJiAweGZmZmZmZikKLSNkZWZpbmUg X2dldF90cmlwbGVfYmUocHRyKSAoYnN3YXBfMzIoKih1X2ludDMyX3QqKShwdHIp KSAmIDB4ZmZmZmZmKQotI2Vsc2UKICNkZWZpbmUgX2dldF90cmlwbGVfbGUocHRy KSAoKih1X2ludDhfdCopKHB0cikgfCAodV9pbnQzMl90KSooKHVfaW50OF90Kiko cHRyKSArIDEpIDw8IDggfCAodV9pbnQzMl90KSooKHVfaW50OF90KikocHRyKSAr IDIpIDw8IDE2KQogI2RlZmluZSBfZ2V0X3RyaXBsZV9iZShwdHIpICgodV9pbnQz Ml90KSoodV9pbnQ4X3QqKShwdHIpIDw8IDE2IHwgKHVfaW50MzJfdCkqKCh1X2lu dDhfdCopKHB0cikgKyAxKSA8PCA4IHwgKigodV9pbnQ4X3QqKShwdHIpICsgMikp Ci0jZW5kaWYKICNkZWZpbmUgX3B1dF90cmlwbGVfbGUocHRyLHZhbCkgZG8geyBc CiAJdV9pbnQ4X3QgKl90bXAgPSAodV9pbnQ4X3QgKikocHRyKTsgXAogCXVfaW50 MzJfdCBfdmFsID0gKHZhbCk7IFwKQEAgLTM4MSw3ICszNzYsNyBAQAogZ2V0MTZf MDEyM18xMjogc2FtcGxlID0gYXNfdTMyYyhzcmMpID4+IDg7IGdvdG8gR0VUMTZf RU5EOwogZ2V0MTZfMDEyM185Mjogc2FtcGxlID0gKGFzX3UzMmMoc3JjKSA+PiA4 KSBeIDB4ODAwMDsgZ290byBHRVQxNl9FTkQ7CiBnZXQxNl8xMjMwXzMyOiBzYW1w bGUgPSBic3dhcF8xNihhc191MzJjKHNyYykgPj4gOCk7IGdvdG8gR0VUMTZfRU5E OwotZ2V0MTZfMTIzMF9CMjogc2FtcGxlID0gYnN3YXBfMTYoKGFzX3UzMmMoc3Jj KSA+PiA4KSBeIDB4ODAwMCk7IGdvdG8gR0VUMTZfRU5EOworZ2V0MTZfMTIzMF9C Mjogc2FtcGxlID0gYnN3YXBfMTYoKGFzX3UzMmMoc3JjKSA+PiA4KSBeIDB4ODAp OyBnb3RvIEdFVDE2X0VORDsKIGdldDE2XzEyMzRfMTI6IHNhbXBsZSA9IGFzX3Uz MmMoc3JjKSA+PiAxNjsgZ290byBHRVQxNl9FTkQ7CiBnZXQxNl8xMjM0XzkyOiBz YW1wbGUgPSAoYXNfdTMyYyhzcmMpID4+IDE2KSBeIDB4ODAwMDsgZ290byBHRVQx Nl9FTkQ7CiBnZXQxNl8xMjM0XzQzOiBzYW1wbGUgPSBic3dhcF8xNihhc191MzJj KHNyYykpOyBnb3RvIEdFVDE2X0VORDsKQEAgLTQwMyw3ICszOTgsNyBAQAogCiAj aWZkZWYgUFVUMTZfTEFCRUxTCiAvKiBkc3Rfd2lkIGRzdF9lbmRzd2FwIHNpZ25f dG9nZ2xlICovCi1zdGF0aWMgdm9pZCAqcHV0MTZfbGFiZWxzWzQgKiAyICogMiAq IDQgKiAyXSA9IHsKK3N0YXRpYyB2b2lkICpwdXQxNl9sYWJlbHNbNCAqIDIgKiAy XSA9IHsKIAkmJnB1dDE2XzEyXzEsCQkgLyogMTZoIC0+ICA4aCAqLwogCSYmcHV0 MTZfMTJfOSwJCSAvKiAxNmggXj4gIDhoICovCiAJJiZwdXQxNl8xMl8xLAkJIC8q IDE2aCAtPiAgOHMgKi8KQEAgLTY2NCwxNyArNjU5LDE3IEBACiAjaWZkZWYgR0VU U19FTkQKIHdoaWxlICgwKSB7CiBnZXRzXzFfMTogc2FtcGxlID0gYXNfczhjKHNy Yyk7IGdvdG8gR0VUU19FTkQ7Ci1nZXRzXzFfOTogc2FtcGxlID0gYXNfczhjKHNy YykgXiAweDgwOyBnb3RvIEdFVFNfRU5EOworZ2V0c18xXzk6IHNhbXBsZSA9IChp bnQ4X3QpKGFzX3M4YyhzcmMpIF4gMHg4MCk7IGdvdG8gR0VUU19FTkQ7CiBnZXRz XzEyXzEyOiBzYW1wbGUgPSBhc19zMTZjKHNyYyk7IGdvdG8gR0VUU19FTkQ7Ci1n ZXRzXzEyXzkyOiBzYW1wbGUgPSBhc19zMTZjKHNyYykgXiAweDgwMDA7IGdvdG8g R0VUU19FTkQ7Ci1nZXRzXzEyXzIxOiBzYW1wbGUgPSBic3dhcF8xNihhc19zMTZj KHNyYykpOyBnb3RvIEdFVFNfRU5EOworZ2V0c18xMl85Mjogc2FtcGxlID0gKGlu dDE2X3QpKGFzX3MxNmMoc3JjKSBeIDB4ODAwMCk7IGdvdG8gR0VUU19FTkQ7Citn ZXRzXzEyXzIxOiBzYW1wbGUgPSAoaW50MTZfdClic3dhcF8xNihhc19zMTZjKHNy YykpOyBnb3RvIEdFVFNfRU5EOwogZ2V0c18xMl9BMTogc2FtcGxlID0gKGludDE2 X3QpYnN3YXBfMTYoYXNfczE2YyhzcmMpIF4gMHg4MCk7IGdvdG8gR0VUU19FTkQ7 Ci1nZXRzXzAxMjNfMDEyMzogc2FtcGxlID0gYXNfczMyYyhzcmMpOyBnb3RvIEdF VFNfRU5EOwotZ2V0c18wMTIzXzA5MjM6IHNhbXBsZSA9IChhc19zMzJjKHNyYykg XiAweDgwMDAwMCk7IGdvdG8gR0VUU19FTkQ7Ci1nZXRzXzEyMzBfMDMyMTogc2Ft cGxlID0gKGludDMyX3QpYnN3YXBfMzIoYXNfczMyYyhzcmMpKTsgZ290byBHRVRT X0VORDsKLWdldHNfMTIzMF8wQjIxOiBzYW1wbGUgPSAoaW50MzJfdClic3dhcF8z Mihhc19zMzJjKHNyYykgXiAweDgwMDApOyBnb3RvIEdFVFNfRU5EOworZ2V0c18w MTIzXzAxMjM6IHNhbXBsZSA9IChpbnQzMl90KShhc19zMzJjKHNyYykgPDwgOCkg Pj4gODsgZ290byBHRVRTX0VORDsKK2dldHNfMDEyM18wOTIzOiBzYW1wbGUgPSAo aW50MzJfdCkoKGFzX3MzMmMoc3JjKSBeIDB4ODAwMDAwKSA8PCA4KSA+PiA4OyBn b3RvIEdFVFNfRU5EOworZ2V0c18xMjMwXzAzMjE6IHNhbXBsZSA9IChpbnQzMl90 KShic3dhcF8zMihhc19zMzJjKHNyYykpIDw8IDgpID4+IDg7IGdvdG8gR0VUU19F TkQ7CitnZXRzXzEyMzBfMEIyMTogc2FtcGxlID0gKGludDMyX3QpKGJzd2FwXzMy KGFzX3MzMmMoc3JjKSBeIDB4ODAwMCkgPDwgOCkgPj4gODsgZ290byBHRVRTX0VO RDsKIGdldHNfMTIzNF8xMjM0OiBzYW1wbGUgPSBhc19zMzJjKHNyYyk7IGdvdG8g R0VUU19FTkQ7Ci1nZXRzXzEyMzRfOTIzNDogc2FtcGxlID0gYXNfczMyYyhzcmMp IF4gMHg4MDAwMDAwMDsgZ290byBHRVRTX0VORDsKK2dldHNfMTIzNF85MjM0OiBz YW1wbGUgPSAoaW50MzJfdCkoYXNfczMyYyhzcmMpIF4gMHg4MDAwMDAwMCk7IGdv dG8gR0VUU19FTkQ7CiBnZXRzXzEyMzRfNDMyMTogc2FtcGxlID0gKGludDMyX3Qp YnN3YXBfMzIoYXNfczMyYyhzcmMpKTsgZ290byBHRVRTX0VORDsKIGdldHNfMTIz NF9DMzIxOiBzYW1wbGUgPSAoaW50MzJfdClic3dhcF8zMihhc19zMzJjKHNyYykg XiAweDgwKTsgZ290byBHRVRTX0VORDsKIH0KQEAgLTY5MCw3ICs2ODUsNyBAQAog CSYmcHV0XzEyXzEyLAkJLyogMTZoIC0+IDE2aCAqLwogCSYmcHV0XzEyXzkyLAkJ LyogMTZoIF4+IDE2aCAqLwogCSYmcHV0XzEyXzIxLAkJLyogMTZoIC0+IDE2cyAq LwotCSYmcHV0XzEyX0ExLAkJLyogMTZoIF4+IDE2cyAqLworCSYmcHV0XzEyXzI5 LAkJLyogMTZoIF4+IDE2cyAqLwogCSYmcHV0XzAxMjNfMDEyMywJLyogMjRoIC0+ IDI0aCAqLwogCSYmcHV0XzAxMjNfMDkyMywJLyogMjRoIF4+IDI0aCAqLwogCSYm cHV0XzAxMjNfMzIxMCwJLyogMjRoIC0+IDI0cyAqLwpAQCAtNzA4LDExICs3MDMs MTIgQEAKIHB1dF8xMl8xMjogYXNfczE2KGRzdCkgPSBzYW1wbGU7IGdvdG8gUFVU X0VORDsKIHB1dF8xMl85MjogYXNfdTE2KGRzdCkgPSBzYW1wbGUgXiAweDgwMDA7 IGdvdG8gUFVUX0VORDsKIHB1dF8xMl8yMTogYXNfczE2KGRzdCkgPSBic3dhcF8x NihzYW1wbGUpOyBnb3RvIFBVVF9FTkQ7Ci1wdXRfMTJfQTE6IGFzX3UxNihkc3Qp ID0gYnN3YXBfMTYoc2FtcGxlIF4gMHg4MCk7IGdvdG8gUFVUX0VORDsKLXB1dF8w MTIzXzAxMjM6IGFzX3MyNChkc3QpID0gc2FtcGxlOyBnb3RvIFBVVF9FTkQ7Ci1w dXRfMDEyM18wOTIzOiBhc191MjQoZHN0KSA9IHNhbXBsZSBeIDB4ODAwMDAwOyBn b3RvIFBVVF9FTkQ7Ci1wdXRfMDEyM18zMjEwOiBhc19zMjQoZHN0KSA9IGJzd2Fw XzMyKHNhbXBsZSk7IGdvdG8gUFVUX0VORDsKLXB1dF8wMTIzXzMyOTA6IGFzX3Uy NChkc3QpID0gYnN3YXBfMzIoc2FtcGxlKSBeIDB4ODAwMDsgZ290byBQVVRfRU5E OworcHV0XzEyXzI5OiBhc191MTYoZHN0KSA9IGJzd2FwXzE2KHNhbXBsZSkgXiAw eDgwOyBnb3RvIFBVVF9FTkQ7CisvKiB0aGlzIGFsd2F5cyB3cml0ZXMgdGhlIHVu dXNlZCBieXRlIGluIDI0LWJpdCBmb3JtYXRzIGFzIDB4MDAgKi8KK3B1dF8wMTIz XzAxMjM6IGFzX3MzMihkc3QpID0gc2FtcGxlICYgMHgwMGZmZmZmZjsgZ290byBQ VVRfRU5EOworcHV0XzAxMjNfMDkyMzogYXNfdTMyKGRzdCkgPSAoc2FtcGxlICYg MHgwMGZmZmZmZikgXiAweDgwMDAwMDsgZ290byBQVVRfRU5EOworcHV0XzAxMjNf MzIxMDogYXNfczMyKGRzdCkgPSBic3dhcF8zMihzYW1wbGUpICYgMHhmZmZmZmYw MDsgZ290byBQVVRfRU5EOworcHV0XzAxMjNfMzI5MDogYXNfdTMyKGRzdCkgPSAo YnN3YXBfMzIoc2FtcGxlKSAmIDB4ZmZmZmZmMDApIF4gMHg4MDAwOyBnb3RvIFBV VF9FTkQ7CiBwdXRfMTIzNF8xMjM0OiBhc19zMzIoZHN0KSA9IHNhbXBsZTsgZ290 byBQVVRfRU5EOwogcHV0XzEyMzRfOTIzNDogYXNfdTMyKGRzdCkgPSBzYW1wbGUg XiAweDgwMDAwMDAwOyBnb3RvIFBVVF9FTkQ7CiBwdXRfMTIzNF80MzIxOiBhc19z MzIoZHN0KSA9IGJzd2FwXzMyKHNhbXBsZSk7IGdvdG8gUFVUX0VORDsK --Boundary_(ID_3fPvCjR7ahDAWhBVi+fpBA)-- ------------------------------------------------------- This sf.net email is sponsored by:ThinkGeek Oh, it's good to be a geek. http://thinkgeek.com/sf