diff options
author | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2010-07-24 20:18:56 +0000 |
---|---|---|
committer | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2010-07-24 20:18:56 +0000 |
commit | da25adcdfbce6d8e10efacd8f6a4cb0c75c3aff1 (patch) | |
tree | 8a9f6c87b18e6436826cbb1cf62095ef275e7b62 /amiga | |
parent | f7e32547987a23148cdf292d8b08733ad3f77409 (diff) | |
download | netsurf-da25adcdfbce6d8e10efacd8f6a4cb0c75c3aff1.tar.gz netsurf-da25adcdfbce6d8e10efacd8f6a4cb0c75c3aff1.tar.bz2 |
ami_easy_clipboard just got easier, and a buffer overrun/memory leak got fixed
svn path=/trunk/netsurf/; revision=10662
Diffstat (limited to 'amiga')
-rwxr-xr-x | amiga/clipboard.c | 77 | ||||
-rwxr-xr-x | amiga/menu.c | 5 | ||||
-rwxr-xr-x | amiga/menu.h | 2 |
3 files changed, 18 insertions, 66 deletions
diff --git a/amiga/clipboard.c b/amiga/clipboard.c index 6ec1b2a39..bf09f5f98 100755 --- a/amiga/clipboard.c +++ b/amiga/clipboard.c @@ -1,5 +1,5 @@ /* - * Copyright 2008,2009 Chris Young <chris@unsatisfactorysoftware.co.uk> + * Copyright 2008-2010 Chris Young <chris@unsatisfactorysoftware.co.uk> * * This file is part of NetSurf, http://www.netsurf-browser.org/ * @@ -156,10 +156,11 @@ bool gui_empty_clipboard(void) else { PopChunk(iffh); + return false; } -// CloseIFF(iffh); + return true; } - return true; + return false; } bool gui_add_to_clipboard(const char *text, size_t length, bool space) @@ -242,33 +243,12 @@ bool ami_clipboard_copy(const char *text, size_t length, struct box *box, bool gui_copy_to_clipboard(struct selection *s) { - struct CSet cset = {0}; + if(!gui_empty_clipboard()) return false; - if(!(OpenIFF(iffh,IFFF_WRITE))) + if (s->defined && selection_traverse(s, ami_clipboard_copy, NULL)) { - if(!(PushChunk(iffh,ID_FTXT,ID_FORM,IFFSIZE_UNKNOWN))) - { - if(option_utf8_clipboard) - { - if(!(PushChunk(iffh,0,ID_CSET,24))) - { - cset.CodeSet = 106; // UTF-8 - WriteChunkBytes(iffh,&cset,24); - PopChunk(iffh); - } - } - - if (s->defined && selection_traverse(s, ami_clipboard_copy, NULL)) - { - gui_commit_clipboard(); - return true; - } - } - else - { - PopChunk(iffh); - } - CloseIFF(iffh); + gui_commit_clipboard(); + return true; } return false; @@ -292,44 +272,11 @@ void ami_drag_selection(struct selection *s) bool ami_easy_clipboard(char *text) { - struct CSet cset = {0}; - - if(!(OpenIFF(iffh,IFFF_WRITE))) - { - if(!(PushChunk(iffh,ID_FTXT,ID_FORM,IFFSIZE_UNKNOWN))) - { - if(option_utf8_clipboard) - { - if(!(PushChunk(iffh,0,ID_CSET,24))) - { - cset.CodeSet = 106; // UTF-8 - WriteChunkBytes(iffh,&cset,24); - PopChunk(iffh); - } - } - - if(!(PushChunk(iffh,0,ID_CHRS,IFFSIZE_UNKNOWN))) - { - if(ami_add_to_clipboard(text,strlen(text),false)) - { - PopChunk(iffh); - gui_commit_clipboard(); - return true; - } - } - else - { - PopChunk(iffh); - } - } - else - { - PopChunk(iffh); - } - CloseIFF(iffh); - } + if(!gui_empty_clipboard()) return false; + if(!gui_add_to_clipboard(text,strlen(text),false)) return false; + if(!gui_commit_clipboard()) return false; - return false; + return true; } bool ami_easy_clipboard_bitmap(struct bitmap *bitmap) diff --git a/amiga/menu.c b/amiga/menu.c index d338d3766..1812a9a86 100755 --- a/amiga/menu.c +++ b/amiga/menu.c @@ -75,6 +75,11 @@ void ami_free_menulabs(void) { if(menulab[i] && (menulab[i] != NM_BARLABEL)) ami_utf8_free(menulab[i]); } + + for(i=AMI_MENU_MAX+1;i<=AMI_MENU_AREXX_MAX;i++) + { + if(menulab[i] && (menulab[i] != NM_BARLABEL)) free(menulab[i]); + } } void ami_init_menulabs(void) diff --git a/amiga/menu.h b/amiga/menu.h index 6f376d9dd..8f925411a 100755 --- a/amiga/menu.h +++ b/amiga/menu.h @@ -61,7 +61,7 @@ #define AMI_MENU_CLEAR FULLMENUNUM(1,5,0) #define AMI_MENU_FIND FULLMENUNUM(2,0,0) -char *menulab[AMI_MENU_MAX+1]; +char *menulab[AMI_MENU_AREXX_MAX+1]; struct NewMenu *ami_create_menu(ULONG type); void ami_init_menulabs(void); |