Some minor bug fixes (prevent crashes in dana and upon quit)
authorNils Faerber <nils.faerber@kernelconcepts.de>
Sat, 16 Jun 2012 22:30:46 +0000 (00:30 +0200)
committerNils Faerber <nils.faerber@kernelconcepts.de>
Sat, 16 Jun 2012 22:30:46 +0000 (00:30 +0200)
mw_main.c
mw_utility.c

index af499c6..3da8541 100644 (file)
--- a/mw_main.c
+++ b/mw_main.c
@@ -563,14 +563,16 @@ static int separate_params(char *params[], char *pbuf)
 static void params_free(char **params)
 {
        int i;
 static void params_free(char **params)
 {
        int i;
+
        for (i=0; i < PARAMS_MAX; i++)
        for (i=0; i < PARAMS_MAX; i++)
-               free(params[i]);
+               if (params[i] != NULL)
+                       free(params[i]);
 }
 
 void process_cmd(char *cmdline, int clinep, mwdata_t *mwdata)
 {
        unsigned char mdata[32];
 }
 
 void process_cmd(char *cmdline, int clinep, mwdata_t *mwdata)
 {
        unsigned char mdata[32];
-       unsigned int intopt;
+       unsigned int intopt=0;
        char cmd[128], pbuf[128], *params[PARAMS_MAX];
        int i, pcnt;
        char *inbuf = cmdline;
        char cmd[128], pbuf[128], *params[PARAMS_MAX];
        int i, pcnt;
        char *inbuf = cmdline;
@@ -602,11 +604,9 @@ void process_cmd(char *cmdline, int clinep, mwdata_t *mwdata)
                pcnt = 0;
 
        if (strncmp(cmd, "quit", 4) == 0) {
                pcnt = 0;
 
        if (strncmp(cmd, "quit", 4) == 0) {
-               //close(mw_fd);
-               //exit(0);
                /* just in case we quit and show another screen */
                mw_update_display(&mwdata->mwdevice, MW_SCREEN_MODE_IDLE, 0);
                /* just in case we quit and show another screen */
                mw_update_display(&mwdata->mwdevice, MW_SCREEN_MODE_IDLE, 0);
-               params_free(params);
+               // params_free(params);
                g_main_loop_quit (mwdata->mloop);
        }
        if (strncmp(cmd, "help", 4) == 0) {
                g_main_loop_quit (mwdata->mloop);
        }
        if (strncmp(cmd, "help", 4) == 0) {
index 6d7ab8a..fa7d342 100644 (file)
@@ -155,6 +155,9 @@ void mw_buf_draw_pixel(mw_buffer *mwbuf, unsigned int x, unsigned int y, mw_colo
        if (clr == MW_TRANSPARENT)
                return;
 
        if (clr == MW_TRANSPARENT)
                return;
 
+       if (x < 0 || x > 128 || y < 0 || y > 128)
+               return;
+
        *(unsigned char *)(mwbuf->pbuf+((y*mwbuf->res_x)+x)) = clr;
 }
 
        *(unsigned char *)(mwbuf->pbuf+((y*mwbuf->res_x)+x)) = clr;
 }