The mvwm repository's master branch has been updated.

The following shows the diffstat and patchsets between the merged result
and HEAD.

commit af8995986c1a942d83ef431189e07ca89f48182a
Author: Dominik Vogt <[email protected]>
Date:   Sat Sep 13 21:01:15 2014 +0100

    Screen parsing cleanup.  Note that fscreen_scr_arg is a union.
---
 libs/FScreen.c          |  5 ++---
 modules/MvwmIconMan/x.c |  3 ---
 mvwm/menus.c            |  1 -
 mvwm/move_resize.c      |  6 +-----
 mvwm/placement.c        | 13 ++++++-------
 5 files changed, 9 insertions(+), 19 deletions(-)

diff --git a/libs/FScreen.c b/libs/FScreen.c
index 096f779..f23a0c6 100644
--- a/libs/FScreen.c
+++ b/libs/FScreen.c
@@ -692,10 +692,9 @@ int FScreenGetGeometry(
        ret = FScreenParseGeometryWithScreen(parsestring, &x, &y, &w, &h, &scr);
        saved = ret & (XNegative | YNegative);
        ret  &= flags;
-
-       arg.mouse_ev = NULL;
        arg.name = scr;
-       FScreenGetScrRect(&arg, FSCREEN_BY_NAME, &scr_x, &scr_y, &scr_w, 
&scr_h);
+       FScreenGetScrRect(
+               &arg, FSCREEN_BY_NAME, &scr_x, &scr_y, &scr_w, &scr_h);
 
        /* II. Interpret and fill in the values */
 
diff --git a/modules/MvwmIconMan/x.c b/modules/MvwmIconMan/x.c
index 184fea7..e89cef8 100644
--- a/modules/MvwmIconMan/x.c
+++ b/modules/MvwmIconMan/x.c
@@ -734,14 +734,11 @@ void X_init_manager (int man_id)
   if (man->geometry_str) {
     char *scr;
     fscreen_scr_arg arg;
-    arg.mouse_ev = NULL;
 
     geometry_mask = FScreenParseGeometryWithScreen(
       man->geometry_str, &man->geometry.x, &man->geometry.y,
       &man->geometry.cols, &man->geometry.rows, &scr);
-
     arg.name = scr;
-
     FScreenGetScrRect(
       &arg, FSCREEN_BY_NAME, &man->managed_g.x, &man->managed_g.y,
       &man->managed_g.width, &man->managed_g.height);
diff --git a/mvwm/menus.c b/mvwm/menus.c
index 3abd486..54a29df 100644
--- a/mvwm/menus.c
+++ b/mvwm/menus.c
@@ -7232,7 +7232,6 @@ char *get_menu_options(
                                return action;
                        }
                        pops->pos_hints.has_screen_origin = 1;
-                       arg.mouse_ev = NULL;
                        arg.name = screen;
                        FScreenGetScrRect(&arg, FSCREEN_BY_NAME,&sx, &sy, &sw,
                                          &sh);
diff --git a/mvwm/move_resize.c b/mvwm/move_resize.c
index 5afd788..387e7a9 100644
--- a/mvwm/move_resize.c
+++ b/mvwm/move_resize.c
@@ -471,12 +471,10 @@ int GetMoveArguments(
        if (s1 && StrEquals(s1, "screen"))
        {
                fscreen_scr_arg parg;
-               parg.mouse_ev = NULL;
 
                free(s1);
                token = PeekToken(action, &action);
                parg.name = token;
-
                FScreenGetScrRect(&parg, FSCREEN_BY_NAME, &scr_x, &scr_y,
                                  &scr_w, &scr_h);
                action = GetNextToken(action, &s1);
@@ -4784,12 +4782,10 @@ void CMD_Maximize(F_CMD_ARGS)
                        if (StrEquals(token, "screen"))
                        {
                                fscreen_scr_arg arg;
-                               arg.mouse_ev = NULL;
+
                                is_screen_given = True;
                                token = PeekToken(taction, &action);
-
                                arg.name = token;
-
                                FScreenGetScrRect(&arg, FSCREEN_BY_NAME,
                                        &scr_x, &scr_y, &scr_w, &scr_h);
                        }
diff --git a/mvwm/placement.c b/mvwm/placement.c
index c39c00e..9b89946 100644
--- a/mvwm/placement.c
+++ b/mvwm/placement.c
@@ -754,7 +754,7 @@ static int __pl_minoverlap_get_next_y(const pl_arg_t *arg)
 
        x = arg->place_g.x;
        y = arg->place_g.y;
-       m = monitor_by_xy(x, y); 
+       m = monitor_by_xy(x, y);
 
        if (m == NULL)
                m = monitor_get_current();
@@ -1474,8 +1474,8 @@ static int __place_get_nowm_pos(
                         * screen.  Let's assume the application specified
                         * global coordinates and translate them to the screen.
                         */
-                       fscreen_scr_arg  arg;
-                       arg.mouse_ev = NULL;
+                       fscreen_scr_arg arg;
+
                        arg.name = start_style.screen;
                        FScreenTranslateCoordinates(
                                &arg, FSCREEN_BY_NAME, NULL, FSCREEN_GLOBAL,
@@ -1684,10 +1684,9 @@ static int __place_window(
        {
                if (flags.do_honor_starts_on_screen)
                {
-                       fscreen_scr_arg  arg;
-                       arg.mouse_ev = NULL;
-                       arg.name = SGET_START_SCREEN(*pstyle);
+                       fscreen_scr_arg arg;
 
+                       arg.name = SGET_START_SCREEN(*pstyle);
                        FScreenGetScrRect(&arg, FSCREEN_BY_NAME,
                                &screen_g.x, &screen_g.y,
                                &screen_g.width, &screen_g.height);
@@ -1850,7 +1849,7 @@ static int __place_window(
                        px = start_style.page_x - 1;
                        py = start_style.page_y - 1;
                        reason->page.reason = PR_PAGE_STYLE;
-                       px *= mon->coord.w; 
+                       px *= mon->coord.w;
                        py *= mon->coord.h;
                        if (!win_opts->flags.do_override_ppos &&
                            !DO_NOT_SHOW_ON_MAP(fw))

commit fe7e4bed62158f14b889859a0bed79f9186acd89
Author: Dominik Vogt <[email protected]>
Date:   Sat Sep 13 20:56:50 2014 +0100

    Fix a crash caused by uninitialised value in 
FScreenParseGeometryWithScreen().
---
 libs/FScreen.c | 23 +++++++++++++----------
 1 file changed, 13 insertions(+), 10 deletions(-)

diff --git a/libs/FScreen.c b/libs/FScreen.c
index 05468ac..096f779 100644
--- a/libs/FScreen.c
+++ b/libs/FScreen.c
@@ -565,24 +565,27 @@ int FScreenParseGeometryWithScreen(
 
        /* Safety net */
        if (parsestring == NULL || *parsestring == '\0')
+       {
                return 0;
+       }
 
        /* If the geometry specification contains an '@' symbol, assume the
         * screen is specified.  This must be the name of the monitor in
         * question!
         */
-       if (strchr(parsestring, '@') == NULL) {
-               copy = mvwm_strdup(parsestring);
-               goto parse_geometry;
-       }
-
        copy = mvwm_strdup(parsestring);
-       copy = strsep(&parsestring, "@");
-       *screen_return = parsestring;
-       geom_str = strsep(&copy, "@");
-       copy = geom_str;
+       if (strchr(parsestring, '@') == NULL)
+       {
+               *screen_return = NULL;
+       }
+       else
+       {
+               copy = strsep(&parsestring, "@");
+               *screen_return = parsestring;
+               geom_str = strsep(&copy, "@");
+               copy = geom_str;
+       }
 
-parse_geometry:
        /* Do the parsing */
        ret = XParseGeometry(
                copy, x_return, y_return, width_return, height_return);

commit c33f3651bbacd257590b784731abe16f2485217f
Author: Dominik Vogt <[email protected]>
Date:   Sun Sep 14 22:32:33 2014 +0100

    Optimise previous commit.
---
 libs/FScreen.c | 41 ++++++++++++++++++++++-------------------
 1 file changed, 22 insertions(+), 19 deletions(-)

diff --git a/libs/FScreen.c b/libs/FScreen.c
index aa6a754..05468ac 100644
--- a/libs/FScreen.c
+++ b/libs/FScreen.c
@@ -609,27 +609,30 @@ int FScreenParseGeometry(
        else
                m = monitor_get_current();
 
-       global_m = monitor_by_name("global");
-
-       /* adapt geometry to selected screen */
-       if (rc & XValue)
-       {
-               if (rc & XNegative)
-                       *x_return -= (global_m->coord.w -
-                                     m->coord.w -
-                                     m->coord.x);
-               else
-                       *x_return += m->coord.x;
-       }
-       if (rc & YValue)
+       if (rc & (XValue | YValue))
        {
-               if (rc & YNegative)
-                       *y_return -= (global_m->coord.h -
-                                     m->coord.h -
-                                     m->coord.y);
-               else
-                       *y_return += m->coord.y;
+               global_m = monitor_by_name("global");
+               /* adapt geometry to selected screen */
+               if (rc & XValue)
+               {
+                       if (rc & XNegative)
+                               *x_return -= (global_m->coord.w -
+                                             m->coord.w -
+                                             m->coord.x);
+                       else
+                               *x_return += m->coord.x;
+               }
+               if (rc & YValue)
+               {
+                       if (rc & YNegative)
+                               *y_return -= (global_m->coord.h -
+                                             m->coord.h -
+                                             m->coord.y);
+                       else
+                               *y_return += m->coord.y;
+               }
        }
+
        return rc;
 }
 


Reply via email to