Subject: pkg/25878: error on build of cdrdao 1.1.8
To: None <gnats-bugs@gnats.NetBSD.org>
From: None <ole.hellqvist@spray.se>
List: pkgsrc-bugs
Date: 06/08/2004 20:17:12
>Number:         25878
>Category:       pkg
>Synopsis:       error on build of cdrdao 1.1.8
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    pkg-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Jun 08 20:18:00 UTC 2004
>Closed-Date:
>Last-Modified:
>Originator:     Ole
>Release:        NetBSD 2.0F
>Organization:
Home user
>Environment:
NetBSD amd64.oxen 2.0F NetBSD 2.0F (GENERIC) #0: Sat Jun  5 16:32:40 CEST 2004 ole@amd64.oxen:/src/sys/arch/amd64/compile/GENERIC amd64
>Description:
During "make" it stops with the following error message: 

g++ -DHAVE_CONFIG_H -I. -I. -I.. -I/usr/pkg/include/pccts  -I/usr/pkg/include  -O2 -I/usr/pkg/include -c -o lec.o `test -f 'lec.cc' || echo './'`lec.cc
lec.cc: In function `u_int32_t calc_edc(u_int8_t*, int)':
lec.cc:281: error: ISO C++ says that `u_int32_t CrcTable::operator[](int) const
   ' and `operator[]' are ambiguous even though the worst conversion for the 
   former is better than the worst conversion for the latter
gmake[2]: *** [lec.o] Error 1
gmake[2]: Leaving directory `/usr/pkgsrc/sysutils/cdrdao/work/cdrdao-1.1.8/trackdb'
gmake[1]: *** [all-recursive] Error 1


Compiler used :


gcc -v :
Using built-in specs.
Configured with: /home/nick/work/netbsd/src/tools/gcc/../../gnu/dist/gcc/configure --enable-long-long --disable-multilib --enable-threads --disable-symvers --build=i386-unknown-netbsdelf --host=x86_64--netbsd --target=x86_64--netbsd
Thread model: posix
gcc version 3.3.3 (NetBSD nb1 20040301)


>How-To-Repeat:
cd /usr/pkgsrc/sysutils/cdrdao
make


 
>Fix:
Patch below makes it compile OK 
but resulting function of program is not verified.


--- /usr/pkgsrc/sysutils/cdrdao/work/cdrdao-1.1.8/trackdb/lec.cc.orig   2004-06-08 19:35:34.000000000 +0200
+++ /usr/pkgsrc/sysutils/cdrdao/work/cdrdao-1.1.8/trackdb/lec.cc        2004-06-08 19:53:56.000000000 +0200
@@ -276,9 +276,11 @@
 static u_int32_t calc_edc(u_int8_t *data, int len)
 {
   u_int32_t crc = 0;
+  u_int32_t temp_aptr;
 
   while (len--) {
-    crc = CRCTABLE[(crc ^ *data++) & 0xffL] ^ (crc >> 8);
+      temp_aptr = (crc ^ *data++) & 0xffL;
+      crc =  CRCTABLE[temp_aptr] ^ (crc >> 8);
   }
 
   return crc;

>Release-Note:
>Audit-Trail:
>Unformatted: