Log in

View Full Version : gcc and namespace fix /EQEmuLoginServer/Client.cpp


orkim
05-26-2011, 12:53 PM
This is a little diff to work around gcc and the enum/namespace issue. Apparently from what I've found online gcc doesn't like the namespace identifier in its enums, so you must declare a variable, set it, then compare with that.

If anyone else has a better way to fix this please speak up!


Index: Client.cpp
================================================== =================
--- Client.cpp (revision 1918)
+++ Client.cpp (working copy)
@@ -127,7 +127,8 @@
}

unsigned int mode = *((unsigned int*)data);
- if(mode == (unsigned int)LoginMode::lm_from_world)
+ LoginMode myMode = lm_from_world;
+ if(mode == (unsigned int)myMode)
{
server_log->Log(log_network, "Session ready indicated logged in from world(unsupported feature), disconnecting.");
connection->Close();


-ork

lerxst2112
05-26-2011, 03:38 PM
You should just be able to do this:

if(mode == (unsigned int)lm_from_world)

Is it actually an error now or still just a warning?

orkim
05-26-2011, 03:54 PM
Yes, good call. Making the change you suggested keeps gcc compiling it just fine without allocating another variable for the comparison.

I think this still needs to be committed to SVN though.

Thanks,

-ork

Tabasco
05-26-2011, 06:58 PM
It looks like as of gcc 4.4, scoped and strongly typed enums are supported. Just fix the makefile.


COPTS=$(WFLAGS) -O -g -m32 -pthread -pipe -DEQLAUNCH $(DFLAGS) $(MYSQL_FLAGS) -std=c++0x

orkim
05-26-2011, 08:12 PM
It looks like as of gcc 4.4, scoped and strongly typed enums are supported. Just fix the makefile.


COPTS=$(WFLAGS) -O -g -m32 -pthread -pipe -DEQLAUNCH $(DFLAGS) $(MYSQL_FLAGS) -std=c++0x


Confirmed. The -std=c++0x flag allowed the desired behavior. Tested with gcc 4.4.3.

Thanks,

-ork