diff -urN xlife-6.7.2/colors.c xlife-6.7.3/colors.c --- xlife-6.7.2/colors.c 2013-03-21 21:19:56.000000000 +0400 +++ xlife-6.7.3/colors.c 2013-08-04 15:10:25.000000000 +0400 @@ -1,6 +1,6 @@ /* * XLife Copyright 2011-13 Vladimir Lidovski vol.litwr@gmail.com - * $Id: colors.c 168 2013-03-21 17:19:56Z micro $ + * $Id: colors.c 241 2013-08-04 10:00:07Z micro $ * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -340,7 +340,7 @@ XChangeGC(disp, cellgc[i], GCForeground, &xgcv); } XSetWindowBackground(disp, lifew, bcolor); - do_expose_lifew(); + redraw_lifew(); showstates(); } @@ -353,6 +353,6 @@ XChangeGC(disp, cellgc[k], GCForeground, &xgcv); } XSetWindowBackground(disp, lifew, cellcolor->pixel); - do_expose_lifew(); + redraw_lifew(); showstates(); } diff -urN xlife-6.7.2/defs.h xlife-6.7.3/defs.h --- xlife-6.7.2/defs.h 2013-06-16 02:25:05.000000000 +0400 +++ xlife-6.7.3/defs.h 2013-08-04 15:10:25.000000000 +0400 @@ -23,7 +23,7 @@ /* A lot of modifications were added at 2001, 2011-13 by Vladimir Lidovski vol.litwr@gmail.com (C) This version of XLife may be used under the same conditions as mentioned above -$Id: defs.h 212 2013-06-15 22:25:05Z micro $ +$Id: defs.h 241 2013-08-04 10:00:07Z micro $ */ #ifdef __GNUCC__ @@ -91,9 +91,9 @@ #define STARTY 2147483648U /* the program's run states */ -#define STOP 0x0 /* single-stepping */ -#define HIDE 0x1 /* evolving, no per-generation display */ -#define RUN 0x2 /* evolving with per-generation display */ +#define STOP 0x1 /* single-stepping */ +#define HIDE 0x2 /* evolving, no per-generation display */ +#define RUN 0x4 /* evolving with per-generation display */ /* time-delays for generation evolution */ #define DELAY_FAST 0 @@ -278,7 +278,7 @@ void Button(void), Release(void); void ResizeLW(int); void alloc_states(unsigned, unsigned); -void do_expose_lifew(void); +void redraw_lifew(void); void fixpatterntopology(void); void make_delay(long, long); int rules_changed(void); diff -urN xlife-6.7.2/file.c xlife-6.7.3/file.c --- xlife-6.7.2/file.c 2013-07-26 14:20:36.000000000 +0400 +++ xlife-6.7.3/file.c 2013-08-04 15:10:25.000000000 +0400 @@ -28,7 +28,7 @@ /* A lot of modifications were added at 2001, 2011-13 by Vladimir Lidovski vol.litwr@gmail.com (C) This version of XLife may be used under the same conditions as mentioned above -$Id: file.c 215 2013-07-26 10:20:36Z micro $ +$Id: file.c 241 2013-08-04 10:00:07Z micro $ */ /* @@ -433,7 +433,7 @@ return 0; } -static void err_rules(void) { //uses inpbuf as input data +static void err_rules(void) { /* uses inpbuf as input data */ announce_and_wait(RED_EVER); if (*pathtorules) use_rules(pathtorules, 0); @@ -1066,10 +1066,8 @@ int loadfile_req(char *fn) { char tmp[PATNAMESIZ], loaddir[PATNAMESIZ]; LoadReq *loadqueue = 0; - int scale_save = scale; if (!stashed[0]) strcpy(stashed, fn); - do_expose_lifew(); /* redefine user load directory (but not pattern library) */ strcpy(loaddir, fn); seppatdir(loaddir, tmp); @@ -1099,8 +1097,8 @@ } setscale(scale); } - if (scale_save != scale) - XClearWindow(disp, lifew); + adjhash(&tentative); + redraw_lifew(); showstates(); showrules(); return 1; diff -urN xlife-6.7.2/framebuffer.c xlife-6.7.3/framebuffer.c --- xlife-6.7.2/framebuffer.c 2013-06-11 18:25:57.000000000 +0400 +++ xlife-6.7.3/framebuffer.c 2013-08-04 15:10:25.000000000 +0400 @@ -1,6 +1,6 @@ /* * XLife Copyright 2013 Vladimir Lidovski vol.litwr@gmail.com - * $Id: framebuffer.c 211 2013-06-11 14:25:57Z micro $ + * $Id: framebuffer.c 237 2013-07-31 10:46:48Z micro $ * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -48,6 +48,7 @@ if (truehistory && c == 0) return; #endif p->cur = c; + //if (!p->checked || c) p->cur = c; p->checked = 1; } } @@ -180,3 +181,12 @@ p->is = 0; first = 0; } + +void fb_flush_rep(void) { + register struct FB *p; + for (p = first; p; p = p->next) + if (p->old) + putcell(p, p->old); + fb_close(maxstates + 2*(pseudocolor && ev_mode == VALENCE_DRIVEN)); +} + diff -urN xlife-6.7.2/framebuffer.h xlife-6.7.3/framebuffer.h --- xlife-6.7.2/framebuffer.h 2013-06-11 18:25:57.000000000 +0400 +++ xlife-6.7.3/framebuffer.h 2013-08-04 15:10:25.000000000 +0400 @@ -1,6 +1,6 @@ /* * XLife Copyright 2013 Vladimir Lidovski vol.litwr@gmail.com - * $Id: framebuffer.h 211 2013-06-11 14:25:57Z micro $ + * $Id: framebuffer.h 237 2013-07-31 10:46:48Z micro $ * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -31,4 +31,6 @@ void fb_ins(unsigned, unsigned, unsigned); void fb_ins_old(unsigned, unsigned, unsigned); void fb_flush(void); +void fb_flush_rep(void); void fb_clear(void); + diff -urN xlife-6.7.2/generate.c xlife-6.7.3/generate.c --- xlife-6.7.2/generate.c 2013-06-07 17:44:42.000000000 +0400 +++ xlife-6.7.3/generate.c 2013-08-04 15:10:25.000000000 +0400 @@ -25,7 +25,7 @@ /* A lot of modifications were added at 2001, 2011-13 by Vladimir Lidovski vol.litwr@gmail.com (C) This version of XLife may be used under the same conditions as mentioned above -$Id: generate.c 209 2013-06-07 13:44:42Z micro $ +$Id: generate.c 241 2013-08-04 10:00:07Z micro $ */ /* @@ -1467,7 +1467,7 @@ center(); if (bounding_box(&active)) make_tentative(active.xmin, active.ymin, active.xmax, active.ymax); - do_expose_lifew(); + redraw_lifew(); } } @@ -2234,7 +2234,7 @@ if ((!memcmp(oscillator_check.cellcount + 1, active.cellcount + 1, maxstates - 1)) && comparepatterns(&active, &oscillator_check)) { state = STOP; - do_expose_lifew(); + redraw_lifew(); sprintf(inpbuf, "Period-%d oscillator is found", active.generations - oscillator_check.generations); announce_and_wait(GREEN_EVER); oscillators = 0; diff -urN xlife-6.7.2/help.c xlife-6.7.3/help.c --- xlife-6.7.2/help.c 2013-05-28 08:06:55.000000000 +0400 +++ xlife-6.7.3/help.c 2013-08-04 15:10:25.000000000 +0400 @@ -23,7 +23,7 @@ /* A lot of modifications were added at 2001, 2011-13 by Vladimir Lidovski vol.litwr@gmail.com (C) This version of XLife may be used under the same conditions as mentioned above -$Id: help.c 197 2013-05-28 04:06:55Z micro $ +$Id: help.c 239 2013-07-31 17:35:09Z micro $ */ #include "defs.h" @@ -169,7 +169,7 @@ strlen(inpbuf)); sprintf(inpbuf, "Wireframe tentative pattern mode: %s", yesno(wireframe)); XDrawString(disp, helpw, itextgc, 10, ++k*FONTHEIGHT, inpbuf, - strlen(inpbuf)); + strlen(inpbuf)); sprintf(inpbuf, "Oscillator check mode: %s", yesno(oscillators)); XDrawString(disp, helpw, itextgc, 10, ++k*FONTHEIGHT, inpbuf, strlen(inpbuf)); diff -urN xlife-6.7.2/Imakefile xlife-6.7.3/Imakefile --- xlife-6.7.2/Imakefile 2013-06-09 23:44:31.000000000 +0400 +++ xlife-6.7.3/Imakefile 2013-08-04 15:10:25.000000000 +0400 @@ -1,5 +1,5 @@ XCOMM Imakefile for xlife 6.7 -XCOMM tested with various Linuxes (Debian 6, Raspbian, Slackware 14, Mandriva 2010, +XCOMM tested with various Linuxes (Debian 7, Raspbian, Slackware 14, Mandriva 2010, XCOMM ZenWalk 6.4, OpenSUSE 12.3), OpenBSD 5.3, NetBSD 6.1, FreeBSD 9.1, Cygwin NT 5.1 #ifdef CygxVersionMajor @@ -16,7 +16,7 @@ XLIFEPATSDIR = xpatsdir_root/patterns CCOPTIONS = -DLIFEDIR=\"$(XLIFEPATSDIR)\" -DHASHBITS=20 -DVFREQ=50 -CDEBUGFLAGS = -g -O5 +CDEBUGFLAGS = -O5 EXTRA_LIBRARIES = -lm DOCDIR = /usr/share/doc/xlife/ INSTBINFLAGS = -m 0755 diff -urN xlife-6.7.2/main.c xlife-6.7.3/main.c --- xlife-6.7.2/main.c 2013-06-16 02:25:06.000000000 +0400 +++ xlife-6.7.3/main.c 2013-08-04 15:10:25.000000000 +0400 @@ -25,7 +25,7 @@ /* * A lot of modifications were added at 2001, 2011-13 by Vladimir Lidovski vol.litwr@gmail.com * (C) This version of XLife may be used under the same conditions as mentioned above - * $Id: main.c 212 2013-06-15 22:25:05Z micro $ + * $Id: main.c 241 2013-08-04 10:00:07Z micro $ */ #include @@ -46,38 +46,32 @@ #include "topology.h" /*#define char unsigned char*/ -//#include "icon.h" #include "icon.h" #include "cursor.h" /*#undef char*/ -extern char *getenv(); - #ifndef GRAB_FRACTION -#define GRAB_FRACTION 0.8 /* fraction of screen to seize */ +#define GRAB_FRACTION 0.8 /* fraction of screen to size */ #endif /* GRAB_FRACTION */ coord_t savex, savey; /* last point seen during boxing */ static coord_t xmarker[3], ymarker[3], linex, liney; -static int clrscn; -void do_expose_lifew() { +void redraw_lifew() { XClearWindow(disp, lifew); pivot = 0; fb_clear(); drawboundedgrid(); - redisplay(1); + redisplay(MESH); } void DoExpose(Window win) { if (convmode) return; if (win == lifew) { - if (clrscn) { - do_expose_lifew(); - clrscn = 0; - } - else - redisplay(1); + XClearWindow(disp, lifew); + pivot = 0; + drawboundedgrid(); + redisplay(MESH + EXPOSE); } else if (win == inputw) { XClearWindow(disp, inputw); @@ -311,7 +305,7 @@ setscale(++scale); xpos += SCALE(event.xmotion.x); ypos += SCALE(event.xmotion.y); - do_expose_lifew(); + redraw_lifew(); } } @@ -320,7 +314,7 @@ xpos -= SCALE(event.xmotion.x); ypos -= SCALE(event.xmotion.y); setscale(--scale); - do_expose_lifew(); + redraw_lifew(); } } @@ -373,8 +367,10 @@ clipboard_copy(&tentative); clipboard.x -= tentative.xmin - STARTX; clipboard.y -= tentative.ymin - STARTY; + if (!wireframe) boxpattern(0); clear_pattern(&tentative); clipboard_flush(&tentative, maxstates); + if (!wireframe) boxpattern(CYAN_EVER); } } @@ -385,7 +381,7 @@ return; case 'r': - do_expose_lifew(); + redraw_lifew(); displaystats(); break; @@ -405,7 +401,7 @@ case 'Z': InitCurrentColors(); DefaultPalette(); - redisplay(1); + redisplay(MESH); break; case 'F': @@ -434,7 +430,7 @@ state = state == RUN ? STOP : RUN; lastx--; bounding_box(&active); - do_expose_lifew(); + redraw_lifew(); break; case '@': @@ -526,7 +522,7 @@ } else announce("Pseudocolor mode is off"); - redisplay(1); + redisplay(MESH); break; case 'o': @@ -576,7 +572,7 @@ for (num = 0; kbuf[0] != ")]}"[num]; num++); xpos += xmarker[num] - XPOS(event.xmotion.x); ypos += ymarker[num] - XPOS(event.xmotion.y); - do_expose_lifew(); + redraw_lifew(); break; case 'J': @@ -588,7 +584,7 @@ if (sscanf(inpbuf + 13, "%d, %d", &x, &y) == 2) { xpos += x + xorigin - XPOS(event.xmotion.x); ypos += y + yorigin - YPOS(event.xmotion.y); - do_expose_lifew(); + redraw_lifew(); } displaystats(); } @@ -611,7 +607,7 @@ } } fixpatterntopology(); - do_expose_lifew(); + redraw_lifew(); showrules(); exit_T: displaystats(); @@ -645,7 +641,7 @@ clear_pattern(&active); copy_tentative(); clear_pattern(&tentative); - do_expose_lifew(); + redraw_lifew(); displaystats(); } break; @@ -663,7 +659,7 @@ displaystats(); center(); } - do_expose_lifew(); + redraw_lifew(); break; case 'S': @@ -689,7 +685,7 @@ numcomments = outcome[0] = 0; if (tentative.tiles) { clear_pattern(&tentative); - do_expose_lifew(); + redraw_lifew(); announce("Load script (and latest load) discarded"); } else @@ -739,7 +735,7 @@ confirmload(); if (state == HIDE) { state = RUN; - do_expose_lifew(); + redraw_lifew(); } else state = HIDE; @@ -819,12 +815,12 @@ strcat(inpbuf, "ff"); DoExpose(inputw); if (tentative.tiles) - do_expose_lifew(); + redraw_lifew(); break; case 'M': /* toggle gridmode */ dispmesh ^= 1; - do_expose_lifew(); + redraw_lifew(); break; case '^': { @@ -877,7 +873,7 @@ case 'U': /* Get rid of loaded pattern */ if (stashed[0]) { clear_pattern(&tentative); - do_expose_lifew(); + redraw_lifew(); } break; @@ -1363,7 +1359,6 @@ griddisplay(1); #endif for (;;) { - clrscn = 1; while (XCheckMaskEvent(disp, KeyPressMask|ButtonPressMask|Button1MotionMask |PointerMotionMask|Button3MotionMask|ButtonReleaseMask|ExposureMask |StructureNotifyMask, &event)) { @@ -1385,7 +1380,6 @@ Release(); break; case ConfigureNotify: - clrscn = 1; DoResize(); break; case Expose: diff -urN xlife-6.7.2/patchlevel.h xlife-6.7.3/patchlevel.h --- xlife-6.7.2/patchlevel.h 2013-07-26 14:20:36.000000000 +0400 +++ xlife-6.7.3/patchlevel.h 2013-08-04 15:10:25.000000000 +0400 @@ -23,9 +23,9 @@ /* * Several modifications were added at 2011-13 by Vladimir Lidovski vol.litwr@gmail.com * (C) This version of XLife may be used under the same conditions as mentioned above - * $Id: patchlevel.h 215 2013-07-26 10:20:36Z micro $ + * $Id: patchlevel.h 227 2013-07-30 04:15:35Z micro $ */ static int majorversion = 6; static int minorversion = 7; -static int patchlevel = 2; +static int patchlevel = 3; diff -urN xlife-6.7.2/tentative.c xlife-6.7.3/tentative.c --- xlife-6.7.2/tentative.c 2013-04-04 19:45:52.000000000 +0400 +++ xlife-6.7.3/tentative.c 2013-08-04 15:10:25.000000000 +0400 @@ -23,7 +23,7 @@ /* * A lot of modifications were added at 2001, 2011-13 by Vladimir Lidovski vol.litwr@gmail.com * (C) This version of XLife may be used under the same conditions as mentioned above - * $Id: tentative.c 178 2013-03-24 10:39:47Z micro $ + * $Id: tentative.c 241 2013-08-04 10:00:07Z micro $ */ #include /* we need offsetof() */ @@ -39,11 +39,11 @@ static void tentative_move(void) { if (topology != 'Q' || scale == 1 && wireframe) - do_expose_lifew(); + redraw_lifew(); else { if (scale > 1 && !dispmesh && wireframe) griddisplay(0); - redisplay(1); + redisplay(MESH); } } @@ -174,7 +174,7 @@ if ((state = getcell(&ptr->cells, dx, dy)) == 1) setcell(&ptr->cells, dx, dy, paintcolor); } - redisplay(1); + redisplay(MESH); } /* tentative.c ends here */ diff -urN xlife-6.7.2/tile.c xlife-6.7.3/tile.c --- xlife-6.7.2/tile.c 2013-06-05 17:23:03.000000000 +0400 +++ xlife-6.7.3/tile.c 2013-08-04 15:10:25.000000000 +0400 @@ -23,7 +23,7 @@ /* * A lot of modifications were added at 2001, 2011-13 by Vladimir Lidovski vol.litwr@gmail.com * (C) This version of XLife may be used under the same conditions as mentioned above - * $Id: tile.c 205 2013-06-05 13:23:03Z micro $ + * $Id: tile.c 241 2013-08-04 10:00:07Z micro $ */ /* @@ -41,9 +41,9 @@ * * void center() -- center viewport on barycenter of pattern * - * void clear_all() -- clear the universe, freeing all storage + * void clear_all() -- clear the universe, freeing all storage * - * void redisplay(int showgrid) -- update visible display of active board + * void redisplay(int mode) -- update visible display of active board * * void drawboundedgrid(void) * @@ -201,7 +201,7 @@ } freep = 0; tilesize = offsetof(tile, cells) + newsize; - do_expose_lifew(); + redraw_lifew(); } } @@ -331,20 +331,25 @@ void display_move(int force, int dx, int dy) { if ((tentative.tiles || force) && wireframe && scale == 1) - do_expose_lifew(); + redraw_lifew(); else if ((tentative.tiles || force) && wireframe && scale > 1 && !dispmesh) { griddisplay(0); - redisplay(1); + redisplay(MESH); } else if (topology != 'Q' && (dx || dy)) { - adjust_topology(dx, dy, 0); - redisplay(0); - adjust_topology(dx, dy, 1); - if (dispmesh && scale > 1) { - griddisplay(1); - if (tentative.tiles) - boxpattern(CYAN_EVER); - } + adjust_topology(dx, dy, 0); + if (tentative.tiles && wireframe) + redisplay(MESH); + else + redisplay(0); + adjust_topology(dx, dy, 1); + if (!tentative.tiles || !wireframe) { + if (dispmesh && scale > 1) { + griddisplay(1); + if (tentative.tiles && !wireframe) + boxpattern(CYAN_EVER); + } + } } else redisplay(tentative.tiles || force); @@ -441,7 +446,6 @@ ptr = nptr; } initcells(pp); - if (pp == &active) fb_clear(); } void clear_all(void) { @@ -449,7 +453,7 @@ if (tentative.tiles) clear_pattern(&tentative); clear_pattern(&active); - do_expose_lifew(); + redraw_lifew(); } static int fb_sync() { @@ -477,7 +481,7 @@ return 5; } -static int onscreen(coord_t x, coord_t y) { +int onscreen(coord_t x, coord_t y) { /*this is a bit complicated due to the big torus calculations */ int px_min = x > xpos - ascale(), py_min = y > ypos - ascale(), px_max = x < xpos + SCALE(width), py_max = y < ypos + SCALE(height); @@ -503,14 +507,10 @@ } } -void redisplay(int showgrid) { -/* re-display the visible part of the board */ +void tile_fb_update(void) { tile *ptr; coord_t x, y, tentx, tenty; int curstate, q = 0; - if (state == HIDE) return; - if (dispmesh && scale > 1 && showgrid) griddisplay(1); - if (!fb_sync()) return; if (truehistory) { historytile *ptr; for (curstate = 1; curstate >= 0; curstate--) { @@ -588,12 +588,26 @@ trdisplaybox(ptr->x - STARTX, ptr->y - STARTY, &ptr->cells); q = 0; } - /* remove pivot of tentative points */ - if (tentative.tiles && pivot) { +} + +void redisplay(int mode) { +/* re-display the visible part of the board*/ + tile *ptr; + coord_t x, y, tentx, tenty; + int curstate, q = 0; + if (state == HIDE) return; + if (dispmesh && scale > 1 && (mode & MESH)) griddisplay(1); + if (!fb_sync()) return; + if (tentative.tiles && pivot) { /* remove pivot of tentative points */ if (!wireframe) boxpattern(CYAN_EVER); drawpivot(); } - fb_flush(); + if (mode & EXPOSE) + fb_flush_rep(); + else { + tile_fb_update(); + fb_flush(); + } if (tentative.tiles && wireframe && scale >= 1) /* draw tentative points with appropriate transformation */ for (ptr = tentative.tiles; ptr; ptr = ptr->next) { diff -urN xlife-6.7.2/tile.h xlife-6.7.3/tile.h --- xlife-6.7.2/tile.h 2013-03-26 13:19:17.000000000 +0400 +++ xlife-6.7.3/tile.h 2013-08-04 15:10:25.000000000 +0400 @@ -23,12 +23,16 @@ /* * A lot of modifications were added at 2001, 2011-13 by Vladimir Lidovski vol.litwr@gmail.com * (C) This version of XLife may be used under the same conditions as mentioned above - * $Id: tile.h 181 2013-03-26 09:19:17Z micro $ + * $Id: tile.h 240 2013-08-01 12:11:59Z micro $ */ #define XMASK 0xfffffff8 #define YMASK 0xfffffff8 +/* redisplay() modes */ +#define MESH 1 +#define EXPOSE 2 + extern pattern active, tentative, oscillator_check; /* the two+1 pattern layers */ void adjhash(pattern*); @@ -51,6 +55,7 @@ int lookcell(pattern*, coord_t, coord_t); tile *maketile(pattern*, coord_t, coord_t); void median(void); +int onscreen(coord_t, coord_t); void redisplay(int); char* rlestr(int); void saveall(FILE*, char); diff -urN xlife-6.7.2/topology.c xlife-6.7.3/topology.c --- xlife-6.7.2/topology.c 2013-05-30 23:35:57.000000000 +0400 +++ xlife-6.7.3/topology.c 2013-08-04 15:10:25.000000000 +0400 @@ -1,6 +1,6 @@ /* * XLife Copyright 2012, 2013 Vladimir Lidovski vol.litwr@gmail.com - * $Id: topology.c 200 2013-05-30 19:35:57Z micro $ + * $Id: topology.c 216 2013-07-28 18:06:27Z micro $ * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that diff -urN xlife-6.7.2/utils.c xlife-6.7.3/utils.c --- xlife-6.7.2/utils.c 2013-04-22 20:33:59.000000000 +0400 +++ xlife-6.7.3/utils.c 2013-08-04 15:10:25.000000000 +0400 @@ -23,7 +23,7 @@ /* * A lot of modifications were added at 2001, 2011-13 by Vladimir Lidovski vol.litwr@gmail.com * (C) This version of XLife may be used under the same conditions as mentioned above - * $Id: utils.c 192 2013-04-22 16:33:59Z micro $ + * $Id: utils.c 241 2013-08-04 10:00:07Z micro $ */ #include @@ -280,7 +280,7 @@ dispchanges = save_dispchanges; if ((dispboxes = save_dispboxes) || dispchanges) bounding_box(&active); tm = end.tv_sec - start.tv_sec + (end.tv_usec - start.tv_usec)/1000000.0; - do_expose_lifew(); + redraw_lifew(); sprintf(inpbuf, "Time: %fs, Speed: %u", tm, tm > 0 ? speed = count/tm + .5 : 0); announce_and_wait(0); @@ -372,7 +372,7 @@ XSetWindowBackground(disp, lifew, cellcolor->pixel); XClearWindow(disp, lifew); } - redisplay(1); + redisplay(MESH); showstates(); } displaystats(); diff -urN xlife-6.7.2/xwidget.c xlife-6.7.3/xwidget.c --- xlife-6.7.2/xwidget.c 2013-03-26 13:19:17.000000000 +0400 +++ xlife-6.7.3/xwidget.c 2013-08-04 15:10:25.000000000 +0400 @@ -1,6 +1,6 @@ /* * XLife Copyright 2011-13 Vladimir Lidovski vol.litwr@gmail.com - * $Id: xwidget.c 181 2013-03-26 09:19:17Z micro $ + * $Id: xwidget.c 241 2013-08-04 10:00:07Z micro $ * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -405,7 +405,6 @@ strcpy(saved_rules, active_rules); if (!loadfile_req(fn)) return; - adjhash(&tentative); if (rules_changed()) free_loadscript(); sprintf(inpbuf, "%d lines of comments", numcomments);