From 4605f0f63574af989331c09b1ddb5a2582c5360a Mon Sep 17 00:00:00 2001 From: "Carl E. Thompson" Date: Thu, 8 Apr 1999 19:13:02 +0000 Subject: 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 --- src/Fl_Menu_.cxx | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'src') 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 $". // -- cgit v1.2.3