Login
User Name:

Password:



Register
Forgot your password?
Vote for Us!
Bug in disarm( )
Nov 12, 2017, 6:54 pm
By GatewaySysop
Bug in will_fall( )
Oct 23, 2017, 1:35 am
By GatewaySysop
Bug in do_zap( ), do_brandish( )
Oct 18, 2017, 1:52 pm
By GatewaySysop
Bug in get_exp_worth( )
Oct 10, 2017, 1:26 am
By GatewaySysop
Bug in do_drag( )
Oct 8, 2017, 12:40 am
By GatewaySysop
LOP Heroes Edition
Author: Vladaar
Submitted by: Vladaar
Heroes sound extras
Author: Vladaar
Submitted by: Vladaar
6Dragons 4.3
Author: Vladaar
Submitted by: Vladaar
Memwatch
Author: Johan Lindh
Submitted by: Vladaar
Beastmaster 6D sound files
Author: Vladaar
Submitted by: Vladaar
Users Online
CommonCrawl, Yahoo!, Yandex

Members: 0
Guests: 8
Stats
Files
Topics
Posts
Members
Newest Member
476
3,704
19,231
608
LAntorcha
Today's Birthdays
There are no member birthdays today.
Related Links
» SmaugMuds.org » Codebases » AFKMud Support & Development » Crash on Entering Areas
Forum Rules | Mark all | Recent Posts

Crash on Entering Areas
< Newer Topic :: Older Topic >

Pages:<< prev 1 next >>
Post is unread #1 Jun 1, 2011, 1:59 pm   Last edited Jun 1, 2011, 1:59 pm by quinnr
Go to the top of the page
Go to the bottom of the page

quinnr
Fledgling
GroupMembers
Posts1
JoinedJun 1, 2011

quinn@moemuds:~/afkmud/area$ gdb -c core ./afkmud
GNU gdb (GDB) 7.2-ubuntu
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/quinn/afkmud/area/afkmud...done.
/home/quinn/afkmud/area/core: No such file or directory.
(gdb) run
Starting program: /home/quinn/afkmud/area/afkmud
Wed Jun 1, 2011 1:50:48 PM PDT :: Booting Database
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Wed Jun 1, 2011 1:50:48 PM PDT :: [*****] BOOT: ---------------------[ Boot Log ]--------------------
Wed Jun 1, 2011 1:50:48 PM PDT :: Database bootup starting.
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading sysdata configuration...
Wed Jun 1, 2011 1:50:48 PM PDT :: Initializing libdl support...
Wed Jun 1, 2011 1:50:48 PM PDT :: Verifying existence of login greeting...
Wed Jun 1, 2011 1:50:48 PM PDT :: Login greeting located.
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading commands...
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading spec_funs...
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading helps...
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading channels...
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading overland maps...
Wed Jun 1, 2011 1:50:48 PM PDT :: Initializing map grid array....
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading continent of One.....
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading overland map exits....
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading overland landmarks....
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading landing sites....
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading socials...
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading skill table...
Wed Jun 1, 2011 1:50:48 PM PDT :: Sorting skill table...
Wed Jun 1, 2011 1:50:48 PM PDT :: Remapping slots to sns...
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading classes
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading races
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading Connection History
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading liquid table
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading mixture table
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading herb table
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading tongues
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading quest bit tables
Wed Jun 1, 2011 1:50:48 PM PDT :: [*****] BUG: load_abits: Cannot open abit file.
Wed Jun 1, 2011 1:50:48 PM PDT :: [*****] BUG: load_qbits: Cannot open qbit file.
Wed Jun 1, 2011 1:50:48 PM PDT :: Initializing random number generator
Wed Jun 1, 2011 1:50:48 PM PDT :: Setting Astral Walk target room
Wed Jun 1, 2011 1:50:48 PM PDT :: Setting time and weather
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading holiday chart...
Wed Jun 1, 2011 1:50:48 PM PDT :: Assigning gsn's
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading DNS cache...
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading slay table...
Wed Jun 1, 2011 1:50:48 PM PDT :: Reading in area files...
Wed Jun 1, 2011 1:50:48 PM PDT :: void.are : Version 1 Vnums: 11000 - 11999
Wed Jun 1, 2011 1:50:48 PM PDT :: entry.are : Version 1 Vnums: 100 - 199
Wed Jun 1, 2011 1:50:48 PM PDT :: astral.are : Version 1 Vnums: 4350 - 4449
Wed Jun 1, 2011 1:50:48 PM PDT :: gwyn.are : Version 1 Vnums: 2850 - 2949
Wed Jun 1, 2011 1:50:48 PM PDT :: catacombs.are : Version 1 Vnums: 1950 - 2099
Wed Jun 1, 2011 1:50:48 PM PDT :: rtower.are : Version 1 Vnums: 7700 - 7799
Wed Jun 1, 2011 1:50:48 PM PDT :: one.are : Version 1 Vnums: 50000 - 50499
Wed Jun 1, 2011 1:50:48 PM PDT :: immtrain.are : Version 1 Vnums: 21100 - 21299
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading ships...
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading runes...
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading runewords...
Wed Jun 1, 2011 1:50:48 PM PDT :: Fixing exits...
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading clans...
Wed Jun 1, 2011 1:50:48 PM PDT :: $
Wed Jun 1, 2011 1:50:48 PM PDT :: Cleaning up clan data...
Wed Jun 1, 2011 1:50:48 PM PDT :: Done clans
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading deities...
Wed Jun 1, 2011 1:50:48 PM PDT :: Done deities
Wed Jun 1, 2011 1:50:48 PM PDT :: Counting pfiles.....
Wed Jun 1, 2011 1:50:48 PM PDT :: Pfile count completed.
Wed Jun 1, 2011 1:50:48 PM PDT :: Total pfiles scanned: 1
Wed Jun 1, 2011 1:50:48 PM PDT :: Total exempted pfiles: 0
Wed Jun 1, 2011 1:50:48 PM PDT :: Updating rare item counts.....
Wed Jun 1, 2011 1:50:48 PM PDT :: Checking player files....
Wed Jun 1, 2011 1:50:48 PM PDT :: Checking corpses....
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading corpses...
Wed Jun 1, 2011 1:50:48 PM PDT :: Making wizlist
Wed Jun 1, 2011 1:50:48 PM PDT :: Building wizinfo
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading MSSP Data...
Wed Jun 1, 2011 1:50:48 PM PDT :: Initializing area reset events...
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading auction sales list...
Wed Jun 1, 2011 1:50:48 PM PDT :: No sales file found.
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading auction houses...
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading clan/guild shops...
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading prototype area files...
Wed Jun 1, 2011 1:50:48 PM PDT :: Fixing prototype zone exits...
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading boards...
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading bans...
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading auth namelist...
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading Immortal Hosts...
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading Projects...
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading Morphs...
Wed Jun 1, 2011 1:50:48 PM PDT :: Done.
Wed Jun 1, 2011 1:50:48 PM PDT :: Loading weather vector data...
Wed Jun 1, 2011 1:50:48 PM PDT :: Initializing area weather data...
Wed Jun 1, 2011 1:50:48 PM PDT :: Area weather data initialized.
Wed Jun 1, 2011 1:50:48 PM PDT :: Registering chess packet handler...
Wed Jun 1, 2011 1:50:48 PM PDT :: Database bootup completed.
Wed Jun 1, 2011 1:50:48 PM PDT :: Initializing main socket
Wed Jun 1, 2011 1:50:48 PM PDT :: Main socket initialized
Wed Jun 1, 2011 1:50:48 PM PDT :: AFKMud ready on port 9500.
Wed Jun 1, 2011 1:50:48 PM PDT :: IMC: Loading IMC2 command table...
Wed Jun 1, 2011 1:50:48 PM PDT :: IMC: Loading IMC2 network data...
Wed Jun 1, 2011 1:50:48 PM PDT :: IMC: Loading IMC2 help file...
Wed Jun 1, 2011 1:50:48 PM PDT :: IMC: Loading IMC2 color table...
Wed Jun 1, 2011 1:50:48 PM PDT :: IMC: IMC2 network data loaded. Autoconnect not set. IMC2 will need to be connected manually.
Wed Jun 1, 2011 1:50:48 PM PDT :: No people online yet. Suspending autonomous update handlers.
Wed Jun 1, 2011 1:50:58 PM PDT :: Waking up autonomous update handlers.
Wed Jun 1, 2011 1:51:02 PM PDT :: Incoming connection: pool-98-110-55-101.cmdnnj.fios.verizon.net, port 37509.
Wed Jun 1, 2011 1:51:02 PM PDT :: Preloading player data for: Admin
Wed Jun 1, 2011 1:51:02 PM PDT :: Loading player data for Admin (14K)
Wed Jun 1, 2011 1:51:02 PM PDT :: Admin [pool-98-110-55-101.cmdnnj.fios.verizon.net] has connected.
Wed Jun 1, 2011 1:51:03 PM PDT :: Xterm client detected for Admin.
Wed Jun 1, 2011 1:51:03 PM PDT :: Admin returns from beyond the void.
*** buffer overflow detected ***: /home/quinn/afkmud/area/afkmud terminated
======= Backtrace: =========
/lib/libc.so.6(__fortify_fail+0x50)[0xb7dcf970]
/lib/libc.so.6(+0xe486a)[0xb7dce86a]
/lib/libc.so.6(__strcpy_chk+0x44)[0xb7dcdbe4]
/home/quinn/afkmud/area/afkmud(_Z8show_mapP9char_dataPc+0x301)[0x81c3f99]
/home/quinn/afkmud/area/afkmud(do_look+0x44a)[0x80a193f]
/home/quinn/afkmud/area/afkmud(_Z9interpretP9char_dataSs+0x1465)[0x815ffbf]
/home/quinn/afkmud/area/afkmud(_Z9move_charP9char_dataP9exit_dataiib+0x284b)[0x80abe36]
/home/quinn/afkmud/area/afkmud(do_east+0x26)[0x80ad88f]
/home/quinn/afkmud/area/afkmud(_Z9interpretP9char_dataSs+0x1465)[0x815ffbf]
/home/quinn/afkmud/area/afkmud(_Z13process_inputv+0x2dc)[0x815adcc]
/home/quinn/afkmud/area/afkmud(_Z9game_loopv+0x6f)[0x815b4e1]
/home/quinn/afkmud/area/afkmud(main+0x217)[0x815c18e]
/lib/libc.so.6(__libc_start_main+0xe7)[0xb7d00ce7]
/home/quinn/afkmud/area/afkmud[0x8076651]
======= Memory map: ========
08048000-0835d000 r-xp 00000000 08:01 12977323 /home/quinn/afkmud/area/afkmud
0835d000-0835e000 r--p 00314000 08:01 12977323 /home/quinn/afkmud/area/afkmud
0835e000-08362000 rw-p 00315000 08:01 12977323 /home/quinn/afkmud/area/afkmud
08362000-0878f000 rw-p 00000000 00:00 0 [heap]
b7a7f000-b7a82000 rw-p 00000000 00:00 0
b7a82000-b7a86000 r-xp 00000000 08:01 8391436 /usr/lib/libXdmcp.so.6.0.0
b7a86000-b7a87000 r--p 00003000 08:01 8391436 /usr/lib/libXdmcp.so.6.0.0
b7a87000-b7a88000 rw-p 00004000 08:01 8391436 /usr/lib/libXdmcp.so.6.0.0
b7a88000-b7a8a000 r-xp 00000000 08:01 8391425 /usr/lib/libXau.so.6.0.0
b7a8a000-b7a8b000 r--p 00001000 08:01 8391425 /usr/lib/libXau.so.6.0.0
b7a8b000-b7a8c000 rw-p 00002000 08:01 8391425 /usr/lib/libXau.so.6.0.0
b7a8c000-b7ab0000 r-xp 00000000 08:01 14417992 /lib/libexpat.so.1.5.2
b7ab0000-b7ab2000 r--p 00024000 08:01 14417992 /lib/libexpat.so.1.5.2
b7ab2000-b7ab3000 rw-p 00026000 08:01 14417992 /lib/libexpat.so.1.5.2
b7ab3000-b7ab4000 rw-p 00000000 00:00 0
b7ab4000-b7acc000 r-xp 00000000 08:01 8392387 /usr/lib/libxcb.so.1.1.0
b7acc000-b7acd000 r--p 00017000 08:01 8392387 /usr/lib/libxcb.so.1.1.0
b7acd000-b7ace000 rw-p 00018000 08:01 8392387 /usr/lib/libxcb.so.1.1.0
b7ace000-b7af1000 r-xp 00000000 08:01 14418069 /lib/libpng12.so.0.44.0
b7af1000-b7af2000 r--p 00022000 08:01 14418069 /lib/libpng12.so.0.44.0
b7af2000-b7af3000 rw-p 00023000 08:01 14418069 /lib/libpng12.so.0.44.0
b7af3000-b7b65000 r-xp 00000000 08:01 8390225 /usr/lib/libfreetype.so.6.6.0
b7b65000-b7b69000 r--p 00071000 08:01 8390225 /usr/lib/libfreetype.so.6.6.0
b7b69000-b7b6a000 rw-p 00075000 08:01 8390225 /usr/lib/libfreetype.so.6.6.0
b7b6a000-b7b98000 r-xp 00000000 08:01 8391700 /usr/lib/libfontconfig.so.1.4.4
b7b98000-b7b99000 r--p 0002d000 08:01 8391700 /usr/lib/libfontconfig.so.1.4.4
b7b99000-b7b9a000 rw-p 0002e000 08:01 8391700 /usr/lib/libfontconfig.so.1.4.4
b7b9a000-b7bb9000 r-xp 00000000 08:01 8392001 /usr/lib/libjpeg.so.62.0.0
b7bb9000-b7bba000 r--p 0001e000 08:01 8392001 /usr/lib/libjpeg.so.62.0.0
b7bba000-b7bbb000 rw-p 0001f000 08:01 8392001 /usr/lib/libjpeg.so.62.0.0
b7bbb000-b7bbc000 rw-p 00000000 00:00 0
b7bbc000-b7cd5000 r-xp 00000000 08:01 8391421 /usr/lib/libX11.so.6.3.0
b7cd5000-b7cd6000 r--p 00118000 08:01 8391421 /usr/lib/libX11.so.6.3.0
b7cd6000-b7cd8000 rw-p 00119000 08:01 8391421 /usr/lib/libX11.so.6.3.0
b7cd8000-b7cd9000 rw-p 00000000 00:00 0
b7cd9000-b7ce8000 r-xp 00000000 08:01 8391456 /usr/lib/libXpm.so.4.11.0
b7ce8000-b7ce9000 r--p 0000e000 08:01 8391456 /usr/lib/libXpm.so.4.11.0
b7ce9000-b7cea000 rw-p 0000f000 08:01 8391456 /usr/lib/libXpm.so.4.11.0
b7cea000-b7e41000 r-xp 00000000 08:01 14418225 /lib/libc-2.12.1.so
b7e41000-b7e43000 r--p 00157000 08:01 14418225 /lib/libc-2.12.1.so
b7e43000-b7e44000 rw-p 00159000 08:01 14418225 /lib/libc-2.12.1.so
b7e44000-b7e47000 rw-p 00000000 00:00 0
b7e47000-b7e61000 r-xp 00000000 08:01 14417999 /lib/libgcc_s.so.1
b7e61000-b7e62000 r--p 00019000 08:01 14417999 /lib/libgcc_s.so.1
b7e62000-b7e63000 rw-p 0001a000 08:01 14417999 /lib/libgcc_s.so.1
b7e63000-b7e87000 r-xp 00000000 08:01 14418229 /lib/libm-2.12.1.so
b7e87000-b7e88000 r--p 00023000 08:01 14418229 /lib/libm-2.12.1.so
b7e88000-b7e89000 rw-p 00024000 08:01 14418229 /lib/libm-2.12.1.so
b7e89000-b7f68000 r-xp 00000000 08:01 8392277 /usr/lib/libstdc++.so.6.0.14
b7f68000-b7f6c000 r--p 000de000 08:01 8392277 /usr/lib/libstdc++.so.6.0.14
b7f6c000-b7f6d000 rw-p 000e2000 08:01 8392277 /usr/lib/libstdc++.so.6.0.14
b7f6d000-b7f74000 rw-p 00000000 00:00 0
b7f74000-b7f76000 r-xp 00000000 08:01 14418228 /lib/libdl-2.12.1.so
b7f76000-b7f77000 r--p 00001000 08:01 14418228 /lib/libdl-2.12.1.so
b7f77000-b7f78000 rw-p 00002000 08:01 14418228 /lib/libdl-2.12.1.so
b7f78000-b7f79000 rw-p 00000000 00:00 0
b7f79000-b7f96000 r-xp 00000000 08:01 8391727 /usr/lib/libgd.so.2.0.0
b7f96000-b7f97000 r--p 0001c000 08:01 8391727 /usr/lib/libgd.so.2.0.0
b7f97000-b7fb6000 rw-p 0001d000 08:01 8391727 /usr/lib/libgd.so.2.0.0
b7fb6000-b7fba000 rw-p 00000000 00:00 0
b7fba000-b7fcd000 r-xp 00000000 08:01 14418114 /lib/libz.so.1.2.3.4
b7fcd000-b7fce000 r--p 00012000 08:01 14418114 /lib/libz.so.1.2.3.4
b7fce000-b7fcf000 rw-p 00013000 08:01 14418114 /lib/libz.so.1.2.3.4
b7fdf000-b7fe1000 rw-p 00000000 00:00 0
b7fe1000-b7fe2000 r-xp 00000000 00:00 0 [vdso]
b7fe2000-b7ffe000 r-xp 00000000 08:01 14418222 /lib/ld-2.12.1.so
b7ffe000-b7fff000 r--p 0001b000 08:01 14418222 /lib/ld-2.12.1.so
b7fff000-b8000000 rw-p 0001c000 08:01 14418222 /lib/ld-2.12.1.so
bffdf000-c0000000 rw-p 00000000 00:00 0 [stack]

Program received signal SIGABRT, Aborted.
0xb7fe1424 in __kernel_vsyscall ()
(gdb)


Logs from gdb are in that spoiler.
Anyways, compiling went fine, and booting the MUD works alright too. I can even get into the MUD and start at the Overland. However, whenever I enter any of the areas, I can enter the first room alright. Then, if I attempt to move anywhere other than back to the overland I get a crash. Any help/ideas? Happens on both my laptop and server, both of which are Ubuntu.
       
Post is unread #2 Jun 1, 2011, 3:52 pm
Go to the top of the page
Go to the bottom of the page

Samson
Black Hand
GroupAdministrators
Posts3,639
JoinedJan 1, 2002

That's that same problem from another similar post: http://www.smaugmuds.org/index.php?a=topic&t=4531

Same issue. I haven't got any idea how it's getting corrupted though since I can't reproduce the problem.
       
Post is unread #3 Jun 1, 2011, 4:07 pm
Go to the top of the page
Go to the bottom of the page

Quixadhal
Conjurer
GroupMembers
Posts398
JoinedMar 8, 2005

My suggestion is to compile with proper debugging support so you can see exactly where it's crashing.


/lib/libc.so.6(__strcpy_chk+0x44)[0xb7dcdbe4]
/home/quinn/afkmud/area/afkmud(_Z8show_mapP9char_dataPc+0x301)[0x81c3f99]


Some strcpy() call in show_map() is unlimited in length and thus overflowing the destination buffer, but without source information by line, that's about all I can say.
       
Post is unread #4 Jun 1, 2011, 4:28 pm
Go to the top of the page
Go to the bottom of the page

Samson
Black Hand
GroupAdministrators
Posts3,639
JoinedJan 1, 2002

The segment of mapper.cpp where the error takes place in the other post I linked.

      /*
       * Add the text, if necessary 
       */
      if( !alldesc )
      {
         pos = get_line( p, 63 );
         char col[10], c[2];

         strcpy( c, whatColor( text, p ) );
         if( c[0] == '\0' )
            mudstrlcpy( col, ch->color_str( AT_RMDESC ), 10 );
         else
            snprintf( col, 10, "%s", c );

         if( pos > 0 )
         {
            mudstrlcat( buf, col, MSL * 2 );
            strncat( buf, p, pos );
            p += pos;
         }
         else
         {
            mudstrlcat( buf, col, MSL * 2 );
            mudstrlcat( buf, p, MSL * 2 );
            alldesc = true;
         }
      }
      mudstrlcat( buf, "\r\n", MSL * 2 );


The whatcolor() function:
char *whatColor( const char *str, const char *pos )
{
   static char col[2];

   col[0] = '\0';
   while( str != pos )
   {
      if( *str == '&' || *str == '{' || *str == '}' )
      {
         col[0] = *str;

         ++str;
         if( !str )
         {
            col[1] = '\0';
            break;
         }
         col[1] = *str;
      }
      ++str;
   }
   return col;
}
       
Post is unread #5 Jun 1, 2011, 8:09 pm
Go to the top of the page
Go to the bottom of the page

Quixadhal
Conjurer
GroupMembers
Posts398
JoinedMar 8, 2005

Oh, that may be it.

whatColor() returns a pointer to a static 2 character buffer which may or may not be NULL terminated. strcpy() requires NULL termination. So, if it isn't NULL terminated, you'll run off the end of the buffer and try to copy some random amount into your own 2 character buffer in mapper.cpp.

I'd suggest using strncpy() and emphatically specify 2 bytes (maybe also make c[] a 3 byte buffer so you can force a NULL on the end).

That's my guess. :)
       
Post is unread #6 Jun 1, 2011, 9:58 pm
Go to the top of the page
Go to the bottom of the page

Samson
Black Hand
GroupAdministrators
Posts3,639
JoinedJan 1, 2002

Well, uh. Yeah. I guess that makes sense doesn't it :P

It's always the little things. It'd probably be enough to make whatColor use a 3 byte buffer instead of 2 so that the NULL can go in the 3rd byte.
       
Pages:<< prev 1 next >>