view etc/recycle2.xpm @ 5272:66dbef5f8076

Be better about bounds-checking, #'subseq, #'fill; add same, #'reduce. 2010-09-16 Aidan Kehoe <kehoea@parhasard.net> * fns.c (Fsubseq): Change the string code to better fit in with the rest of this function (it still uses get_string_range_char(), though, which *may* diverge algorithmically from what we're doing). If dealing with a cons, only call #'length if we have reason to believe that the START and END arguments are badly specified, and check for circular lists ourselves when that's appropriate. If dealing with a vector, call Fvector() on the appropriate subset of the old vector's data directly, don't initialise the result with nil and then copy. (Ffill): Only check the range arguments for a cons SEQUENCE if we have good reason to think they were badly specified. (Freduce): Handle multiple values properly. Add bounds checking to this function, as specificied by ANSI Common Lisp.
author Aidan Kehoe <kehoea@parhasard.net>
date Thu, 16 Sep 2010 18:46:05 +0100
parents 376386a54a3c
children 7910031dd78a
line wrap: on
line source

/* XPM */
static char * recycle2_xpm[] = {
/* width height ncolors cpp [x_hot y_hot] */
"32 32 4 1 26 23",
/* colors */
" 	s none	m none	c none",
".	s iconColor1	m black	c black",
"X	c #7F7FFFFF0000",
"o	c #45458B8B0000",
/* pixels */
"                                ",
"           ............         ",
"         .XXXXXXXX.oooXX.       ",
"         XXXXXXXX.ooXXXXX.      ",
"        .XXXXXXXX.ooXXXXXX  ..  ",
"        .XXXXXXX..XXXXXXXX .o.  ",
"       .XXXXXXXX  .XXXXXXXXX.   ",
"       XXXXXXXX.   XXXXXXXX.    ",
"      .XXXXXXXX.   XXXXXXXX     ",
"        .XXXXX.    .XXXXXX.     ",
"         ..XXX   ..XXXXXXX      ",
" .........  ..            .XX   ",
"  .XXXXXXX.             .XXXX.  ",
"   .XXXXXX.           ..XXXXXX. ",
"   .XXXXXXX.          XXXXXXXXX ",
"   .XXXXXXX.          .XXXXXXXX ",
"  .XXXXXXXXX.          .XXXXXXX.",
"  .XXXXXXX..X.          XXXXXXX.",
"  .XXXXXXX. ..      .   XXXXXXX.",
"   .XXXXX.         .X   .XXXXXX ",
"    XXXXX          .X    .XXXX. ",
"    .XXX........   XX.........  ",
"     .X.ooXXXXXX  .XXXXXXXXXo   ",
"     .X.oXoXXXXX .XXXXXXXXXXo   ",
"      XooXXXXXXX XXXXXXXXXXo.   ",
"      .ooXXXXXXX XXXXXXXXXX.    ",
"       ooXXXXXXX .XXXXXXXXo     ",
"        .XXXXXXX  .XXXXXo.      ",
"         .......   XX....       ",
"                   .X           ",
"                   .X           ",
"                    .           "};