gonzalop / dircproxy

Automatically exported from code.google.com/p/dircproxy
GNU General Public License v2.0
0 stars 0 forks source link

Compile error in irc_server.c and hopeful fix #74

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
First, about my machine:

[arch06:~/Download/dircproxy-1.1.0]$ uname -a
Linux arch06.cis.gvsu.edu 2.6.34.7-56.fc13.x86_64 #1 SMP Wed Sep 15 03:36:55 
UTC 2010 x86_64 x86_64 x86_64 GNU/Linux
[arch06:~/Download/dircproxy-1.1.0]$ gcc --version
gcc (GCC) 4.4.4 20100630 (Red Hat 4.4.4-10)
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

After running ./configure and when trying to run make, I get this error:

irc_server.c: In function ‘_ircserver_gotmsg’:
irc_server.c:702: error: lvalue required as left operand of assignment
irc_server.c:743: error: lvalue required as left operand of assignment
make[2]: *** [irc_server.o] Error 1
make[2]: Leaving directory `/home/swettt/Download/dircproxy-1.1.0/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/swettt/Download/dircproxy-1.1.0'
make: *** [all] Error 2

Here's the full output of configure and make: http://pastebin.ca/1950770

I looked at irc_server.c:702 and irc_server.c:743 and found that they were both 
"s = (l ? l->next : p->squelch_modes) = n;"; I changed both of these to "if (l) 
s = l-> next = n; else p->squelch_modes = n;". I tried to make again before 
encountering essentially the same problem (a ?: expression used as an lvalue) 
and changed it analogously; after doing the same a couple times, I got it to 
compile successfully.

Hopefully, this doesn't change the semantics of the program and these changes 
can be implemented without any harm.

Original issue reported on code.google.com by ihope...@gmail.com on 29 Sep 2010 at 1:03

GoogleCodeExporter commented 9 years ago
While it’s been a while since I’ve written C, and I haven’t looked into 
this in detail, I believe your change is incorrect.  You omit one assignment in 
your change and “if (l) l->next = n; else p->squelch_modes = n; s = n;” 
accounts for this.  Regardless, I also noticed GCC 4 complains about the use of 
this conditional operator in dcc_net.c and net.c and I made similar changes to 
these files to allow dircproxy to compile cleanly.

If someone sees an issue here please let me know.

Original comment by daniel%m...@gtempaccount.com on 2 Nov 2010 at 4:25