--- rxvt-unicode/src/command.C 2012/06/10 16:00:26 1.521 +++ rxvt-unicode/src/command.C 2012/08/14 20:32:48 1.524 @@ -1469,13 +1469,16 @@ bool want_position_change = SHOULD_INVOKE (HOOK_POSITION_CHANGE); + bool moved = false; #ifdef HAVE_BG_PIXMAP if (bg_window_position_sensitive ()) - want_position_change = true; + { + want_position_change = true; + if (!(bg_flags & BG_IS_VALID)) + moved = true; + } #endif - bool moved = false; - if (want_position_change) { int x, y; @@ -1495,9 +1498,6 @@ HOOK_INVOKE ((this, HOOK_POSITION_CHANGE, DT_INT, x, DT_INT, y, DT_END)); moved = true; } - - if (!(bg_flags & BG_IS_VALID)) - moved = true; } if (szHint.width != ev.xconfigure.width || szHint.height != ev.xconfigure.height) @@ -2389,6 +2389,8 @@ if (len == (size_t)-1) { mbstate.reset (); // reset now undefined conversion state + // a -1 might indicate that a previous incomplet char is invalid (previous return -2) + // in which case we "errornously" return the next byte which might be valid. return (unsigned char)*cmdbuf_ptr++; // the _occasional_ latin1 character is allowed to slip through } @@ -3490,8 +3492,14 @@ if (*str != ';') { - if (fimage.set_file_geometry (this, str)) - changed = true; + try + { + fimage.set_file_geometry (this, str); + changed = true; + } + catch (const class rxvt_failure_exception &e) + { + } } else {