--- links-2.1pre17/framebuffer.c.orig 2005-02-24 17:17:57.000000000 +0100 +++ links-2.1pre17/framebuffer.c 2005-03-05 01:56:23.264083992 +0100 @@ -1072,13 +1072,17 @@ kbd_set_raw = 1; fb_old_vd = NULL; ignore=ignore; - fb_driver_param=param; + fb_driver_param=NULL; + if(param != NULL) + fb_driver_param=stracpy(param); border_left = border_right = border_top = border_bottom = 0; if (!param) param=""; if (*param) { if (*param < '0' || *param > '9') - bad_p: return stracpy("-mode syntax is left_border[,top_border[,right_border[,bottom_border]]]\n"); + { bad_p: + if(fb_driver_param) { mem_free(fb_driver_param); fb_driver_param=NULL; } + return stracpy("-mode syntax is left_border[,top_border[,right_border[,bottom_border]]]\n"); } border_left = strtoul(param, (char **)(void *)¶m, 10); if (*param == ',') param++; } else { @@ -1107,16 +1111,23 @@ } if (*param) goto bad_p; - if (fstat(TTY, &st)) return stracpy("Cannon stat stdin.\n"); + if (fstat(TTY, &st)) { + if(fb_driver_param) { mem_free(fb_driver_param); fb_driver_param=NULL; } + return stracpy("Cannon stat stdin.\n"); + } fb_console = st.st_rdev & 0xff; ioctl(TTY, VT_WAITACTIVE, fb_console); - if ((e = fb_switch_init())) return e; + if ((e = fb_switch_init())) { + if(fb_driver_param) { mem_free(fb_driver_param); fb_driver_param=NULL; } + return e; + } fb_handler=open("/dev/fb0",O_RDWR); if (fb_handler==-1) { fb_switch_shutdown(); + if(fb_driver_param) { mem_free(fb_driver_param); fb_driver_param=NULL; } return stracpy("Cannot open /dev/fb0.\n"); } @@ -1124,6 +1135,7 @@ { close(fb_handler); fb_switch_shutdown(); + if(fb_driver_param) { mem_free(fb_driver_param); fb_driver_param=NULL; } return stracpy("Cannot get FB VSCREENINFO.\n"); } @@ -1133,6 +1145,7 @@ { close(fb_handler); fb_switch_shutdown(); + if(fb_driver_param) { mem_free(fb_driver_param); fb_driver_param=NULL; } return stracpy("Cannot get FB FSCREENINFO.\n"); } @@ -1180,6 +1193,7 @@ default: close(fb_handler); fb_switch_shutdown(); + if(fb_driver_param) { mem_free(fb_driver_param); fb_driver_param=NULL; } return stracpy("Unknown bit depth"); } fb_colors=1<