summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl E. Thompson <devel-fltk@carlthompson.net>1999-04-08 19:13:02 +0000
committerCarl E. Thompson <devel-fltk@carlthompson.net>1999-04-08 19:13:02 +0000
commit4605f0f63574af989331c09b1ddb5a2582c5360a (patch)
tree7ba07c57262db335157dbd83deefe90b12073190
parent761adb89f5578f0de636a6a74171c513c453d6ec (diff)
Guillaume's fix for Fl_Menu_::copy()
-Carl git-svn-id: file:///fltk/svn/fltk/branches/branch-1.0@525 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
-rw-r--r--src/Fl_Menu_.cxx13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/Fl_Menu_.cxx b/src/Fl_Menu_.cxx
index 76949bf01..875eef964 100644
--- a/src/Fl_Menu_.cxx
+++ b/src/Fl_Menu_.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Menu_.cxx,v 1.7.2.1 1999/03/16 08:44:48 bill Exp $"
+// "$Id: Fl_Menu_.cxx,v 1.7.2.2 1999/04/08 19:13:02 carl Exp $"
//
// Common menu code for the Fast Light Tool Kit (FLTK).
//
@@ -113,13 +113,16 @@ void Fl_Menu_::menu(const Fl_Menu_Item* m) {
}
void Fl_Menu_::copy(const Fl_Menu_Item* m, void* user_data) {
- int n = m->size()+1;
+ int i, s = m->size(), n=s;
+ for (i=0; n; n>>=1, i++);
+ n = 1 << i;
Fl_Menu_Item* newMenu = new Fl_Menu_Item[n];
- memcpy(newMenu, m, n*sizeof(Fl_Menu_Item));
+ memcpy(newMenu, m, s*sizeof(Fl_Menu_Item));
+ memset(newMenu+s, 0, (n-s)*sizeof(Fl_Menu_Item));
menu(newMenu);
alloc = 1; // make destructor free it
// for convienence, provide way to change all the user data pointers:
- if (user_data) for (; n--;) {
+ if (user_data) for (; s--;) {
if (newMenu->callback_) newMenu->user_data_ = user_data;
newMenu++;
}
@@ -141,5 +144,5 @@ void Fl_Menu_::clear() {
}
//
-// End of "$Id: Fl_Menu_.cxx,v 1.7.2.1 1999/03/16 08:44:48 bill Exp $".
+// End of "$Id: Fl_Menu_.cxx,v 1.7.2.2 1999/04/08 19:13:02 carl Exp $".
//