summaryrefslogtreecommitdiff
path: root/amiga
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2010-07-24 20:18:56 +0000
committerChris Young <chris@unsatisfactorysoftware.co.uk>2010-07-24 20:18:56 +0000
commitda25adcdfbce6d8e10efacd8f6a4cb0c75c3aff1 (patch)
tree8a9f6c87b18e6436826cbb1cf62095ef275e7b62 /amiga
parentf7e32547987a23148cdf292d8b08733ad3f77409 (diff)
downloadnetsurf-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-xamiga/clipboard.c77
-rwxr-xr-xamiga/menu.c5
-rwxr-xr-xamiga/menu.h2
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);