Commit db9439cdc7b684f2f1d0f1a4ca0a33a6c114d9ea
1 parent
75e79e39
Exists in
master
and in
3 other branches
Corrigindo erro no gerenciamento de memoria
Showing
1 changed file
with
8 additions
and
3 deletions
Show diff stats
selection.c
| ... | ... | @@ -428,24 +428,29 @@ LIB3270_EXPORT char * lib3270_get_text(H3270 *h, int offset, int len) |
| 428 | 428 | buffer = malloc(len+1); |
| 429 | 429 | ptr = buffer; |
| 430 | 430 | |
| 431 | - while(len-- > 0) | |
| 431 | + trace("len=%d buffer=%p",len,buffer); | |
| 432 | + | |
| 433 | + while(len > 0) | |
| 432 | 434 | { |
| 433 | 435 | if(h->text[offset].attr & LIB3270_ATTR_CG) |
| 434 | 436 | *ptr = ' '; |
| 435 | 437 | else if(h->text[offset].chr) |
| 436 | 438 | *ptr = h->text[offset].chr; |
| 437 | 439 | else |
| 438 | - *ptr = " "; | |
| 440 | + *ptr = ' '; | |
| 439 | 441 | |
| 440 | 442 | ptr++; |
| 441 | 443 | offset++; |
| 444 | + len--; | |
| 442 | 445 | |
| 443 | - if((offset%h->cols) == 0) | |
| 446 | + if((offset%h->cols) == 0 && len > 0) | |
| 444 | 447 | { |
| 445 | 448 | *(ptr++) = '\n'; |
| 446 | 449 | len--; |
| 447 | 450 | } |
| 448 | 451 | } |
| 452 | + trace("len=%d buffer=%p pos=%d",len,buffer,ptr-buffer); | |
| 453 | + | |
| 449 | 454 | *ptr = 0; |
| 450 | 455 | |
| 451 | 456 | return buffer; | ... | ... |