Hello community, here is the log from the commit of package linuxrc for openSUSE:Factory checked in at 2017-04-18 13:47:33 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/linuxrc (Old) and /work/SRC/openSUSE:Factory/.linuxrc.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "linuxrc" Tue Apr 18 13:47:33 2017 rev:238 rq:487800 version:5.0.100 Changes: -------- --- /work/SRC/openSUSE:Factory/linuxrc/linuxrc.changes 2017-02-14 00:38:40.192665621 +0100 +++ /work/SRC/openSUSE:Factory/.linuxrc.new/linuxrc.changes 2017-04-18 13:47:35.590292251 +0200 @@ -0,0 +1,7 @@ +-------------------------------------------------------------------- +Thu Apr 13 09:39:07 UTC 2017 - [email protected] + +- merge gh#openSUSE/linuxrc#137 +- fix segfault when loading installer (bsc#1033441) +- 5.0.100 + Old: ---- linuxrc-5.0.99.tar.xz New: ---- linuxrc-5.0.100.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ linuxrc.spec ++++++ --- /var/tmp/diff_new_pack.V70Gji/_old 2017-04-18 13:47:36.290193188 +0200 +++ /var/tmp/diff_new_pack.V70Gji/_new 2017-04-18 13:47:36.290193188 +0200 @@ -17,7 +17,7 @@ Name: linuxrc -Version: 5.0.99 +Version: 5.0.100 Release: 0 Summary: SUSE Installation Program License: GPL-3.0+ ++++++ linuxrc-5.0.99.tar.xz -> linuxrc-5.0.100.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linuxrc-5.0.99/VERSION new/linuxrc-5.0.100/VERSION --- old/linuxrc-5.0.99/VERSION 2017-02-10 11:18:01.000000000 +0100 +++ new/linuxrc-5.0.100/VERSION 2017-04-13 11:39:07.000000000 +0200 @@ -1 +1 @@ -5.0.99 +5.0.100 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linuxrc-5.0.99/changelog new/linuxrc-5.0.100/changelog --- old/linuxrc-5.0.99/changelog 2017-02-10 11:18:01.000000000 +0100 +++ new/linuxrc-5.0.100/changelog 2017-04-13 11:39:07.000000000 +0200 @@ -1,3 +1,6 @@ +2017-04-13: 5.0.100 + - fix segfault when loading installer (bsc #1033441) + 2017-02-09: 5.0.99 - avoid segfault when image files are missing - match only file name, not path when checking digests diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linuxrc-5.0.99/display.c new/linuxrc-5.0.100/display.c --- old/linuxrc-5.0.99/display.c 2017-02-10 11:18:01.000000000 +0100 +++ new/linuxrc-5.0.100/display.c 2017-04-13 11:39:07.000000000 +0200 @@ -314,6 +314,14 @@ } +/* + * Save window area. + * + * You can restore the window area later by calling disp_restore_area(). + * + * Note: it is a programming error to call disp_save_area() two times in a + * row without disp_restore_area() in between. + */ void disp_save_area(window_t *win) { int i, x_len, y_len; @@ -332,10 +340,14 @@ if(y_len + win->y_left > max_y_ig) y_len = max_y_ig - win->y_left + 1; -// log_info("save area at %d x %d (size %d x %d)\n", win->x_left, win->y_left, x_len, y_len); + log_debug("save area %p at %d x %d (size %d x %d)\n", win, win->x_left, win->y_left, x_len, y_len); // dump_screen("save area, start"); + if(win->save_area) { + log_info("Warning: save area already in use!"); + } + win->save_area = malloc(sizeof (character_t *) * y_len); for(i = 0; i < y_len; i++) { @@ -351,6 +363,13 @@ } +/* + * Restore saved window area. + * + * Note: it is actually allowed to call this function without a prior + * disp_save_area(). It will do nothing in this case. + * + */ void disp_restore_area(window_t *win) { int x, x_len; @@ -373,6 +392,13 @@ if(x_len + win->x_left > max_x_ig) x_len = max_x_ig - win->x_left + 1; if(y_len + win->y_left > max_y_ig) y_len = max_y_ig - win->y_left + 1; + log_debug("restore area %p at %d x %d (size %d x %d)\n", win, win->x_left, win->y_left, x_len, y_len); + + if(!win->save_area) { + log_debug("Warning: restore area not initialized!"); + return; + } + for(y = 0; y < y_len; y++) { disp_gotoxy(win->x_left, win->y_left + y); for(x = 0; x < x_len;) { @@ -385,6 +411,8 @@ for(y = 0; y < y_len; y++) free(win->save_area[y]); free(win->save_area); + win->save_area = NULL; + disp_set_attr(save_attr); } @@ -394,6 +422,9 @@ window_t tmp_win; tmp_win = *win; + /* we must not copy .save_area as it's modified by disp_{save,restore}_area */ + tmp_win.save_area = NULL; + disp_save_area(&tmp_win); disp_restore_area(&tmp_win); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linuxrc-5.0.99/url.c new/linuxrc-5.0.100/url.c --- old/linuxrc-5.0.99/url.c 2017-02-10 11:18:01.000000000 +0100 +++ new/linuxrc-5.0.100/url.c 2017-04-13 11:39:07.000000000 +0200 @@ -935,6 +935,8 @@ * return: * 0: ok * 1: abort download + * + * Note: it's possible that 'done' follows 'init' without any 'update' in between. */ int url_progress(url_data_t *url_data, int stage) {
