Changeset 168
- Timestamp:
- Nov 13, 2003, 5:45:25 PM (20 years ago)
- Location:
- ttyvaders/trunk/libee
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
ttyvaders/trunk/libee/ee.c
r160 r168 68 68 69 69 static int _ee_delay; 70 char *_ee_empty_line; 70 71 71 72 #if defined(USE_NCURSES) … … 167 168 168 169 #elif defined(USE_CONIO) 170 gettextinfo(&ti); 171 _ee_screen = malloc(2 * ti.screenwidth * ti.screenheight); 172 if(_ee_screen == NULL) 173 return -1; 169 174 _wscroll = 0; 170 175 _setcursortype(_NOCURSOR); 171 176 clrscr(); 172 gettextinfo(&ti);173 _ee_screen = malloc(2 * ti.screenwidth * ti.screenheight);174 177 # if defined(SCREENUPDATE_IN_PC_H) 175 178 ScreenRetrieve(_ee_screen); … … 179 182 180 183 #endif 184 _ee_empty_line = malloc(ee_get_width() + 1); 185 memset(_ee_empty_line, ' ', ee_get_width()); 186 _ee_empty_line[ee_get_width()] = '\0'; 187 181 188 _ee_delay = 0; 182 189 -
ttyvaders/trunk/libee/ee_internals.h
r160 r168 32 32 #endif 33 33 34 extern char *_ee_empty_line; 35 34 36 #endif /* __EE_INTERNALS_H__ */ -
ttyvaders/trunk/libee/graphics.c
r160 r168 119 119 { 120 120 /* We could use SLsmg_cls() etc., but drawing empty lines is much faster */ 121 int x = ee_get_width();122 121 int y = ee_get_height(); 123 char *empty_line = malloc((x + 1) * sizeof(char));124 125 memset(empty_line, ' ', x);126 empty_line[x] = '\0';127 122 128 123 while(y--) 129 { 130 ee_putstr(0, y, empty_line); 131 } 132 133 free(empty_line); 124 ee_putstr(0, y, _ee_empty_line); 134 125 } 135 126 -
ttyvaders/trunk/libee/sprite.c
r160 r168 55 55 56 56 sprite = malloc(sizeof(struct ee_sprite)); 57 if(sprite == NULL) 58 goto sprite_alloc_failed; 59 57 60 sprite->nf = 0; 58 61 sprite->frames = NULL; … … 72 75 break; 73 76 74 if(sprite->nf++) 75 sprite->frames = realloc(sprite->frames, 76 sprite->nf * sizeof(struct ee_frame)); 77 if(sprite->nf) 78 { 79 void *tmp = realloc(sprite->frames, 80 (sprite->nf + 1) * sizeof(struct ee_frame)); 81 if(tmp == NULL) 82 goto frame_failed; 83 sprite->frames = tmp; 84 sprite->nf++; 85 } 77 86 else 78 sprite->frames = malloc(sprite->nf * sizeof(struct ee_frame)); 87 { 88 sprite->frames = malloc((sprite->nf + 1) * sizeof(struct ee_frame)); 89 if(sprite->frames == NULL) 90 goto sprite_failed; 91 sprite->nf++; 92 } 93 79 94 frame = &sprite->frames[sprite->nf - 1]; 80 95 … … 84 99 frame->dy = dy; 85 100 frame->chars = malloc(w * h * sizeof(char)); 101 if(frame->chars == NULL) 102 { 103 sprite->nf--; 104 goto frame_failed; 105 } 86 106 frame->color = malloc(w * h * sizeof(int)); 107 if(frame->color == NULL) 108 { 109 free(frame->chars); 110 sprite->nf--; 111 goto frame_failed; 112 } 87 113 88 114 for(y = 0; y < h; y++) 89 115 { 90 116 if(!fgets(buf, BUFSIZ, fd)) 91 goto f ailed;117 goto frame_failed; 92 118 93 119 for(x = 0; x < w && buf[x] && buf[x] != '\r' && buf[x] != '\n'; x++) … … 101 127 { 102 128 if(!fgets(buf, BUFSIZ, fd)) 103 goto f ailed;129 goto frame_failed; 104 130 105 131 for(x = 0; x < w && buf[x] && buf[x] != '\r' && buf[x] != '\n'; x++) … … 111 137 112 138 continue; 113 114 failed: 139 } 140 141 if(sprite->nf == 0) 142 goto sprite_failed; 143 144 fclose(fd); 145 return sprite; 146 147 frame_failed: 148 while(sprite->nf) 149 { 150 free(sprite->frames[sprite->nf - 1].color); 115 151 free(sprite->frames[sprite->nf - 1].chars); 116 free(sprite->frames[sprite->nf - 1].color);117 152 sprite->nf--; 118 break; 119 } 120 153 } 154 sprite_failed: 155 free(sprite); 156 sprite_alloc_failed: 121 157 fclose(fd); 122 123 if(sprite->nf == 0) 124 { 125 free(sprite); 126 return NULL; 127 } 128 129 return sprite; 158 return NULL; 130 159 } 131 160
Note: See TracChangeset
for help on using the changeset viewer.