diff options
author | Harald van Dijk <truedfx@gentoo.org> | 2009-05-12 18:24:27 +0000 |
---|---|---|
committer | Harald van Dijk <truedfx@gentoo.org> | 2009-05-12 18:24:27 +0000 |
commit | 59a4ecc3aa543fe52be29e940689b9c024b7687a (patch) | |
tree | 3ff1c90c6acbd08593babee389c624be5a9d4bd5 /dev-lang/lazarus/files | |
parent | Fix from friendly administrator, use -2 instead of -w in SOX parameters wrt #... (diff) | |
download | gentoo-2-59a4ecc3aa543fe52be29e940689b9c024b7687a.tar.gz gentoo-2-59a4ecc3aa543fe52be29e940689b9c024b7687a.tar.bz2 gentoo-2-59a4ecc3aa543fe52be29e940689b9c024b7687a.zip |
Fix crashes on clipboard operations, bug #269221
(Portage version: 2.2_rc33/cvs/Linux i686)
Diffstat (limited to 'dev-lang/lazarus/files')
-rw-r--r-- | dev-lang/lazarus/files/lazarus-0.9.26-clipboard-crash.patch | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/dev-lang/lazarus/files/lazarus-0.9.26-clipboard-crash.patch b/dev-lang/lazarus/files/lazarus-0.9.26-clipboard-crash.patch new file mode 100644 index 000000000000..9e25042c5c77 --- /dev/null +++ b/dev-lang/lazarus/files/lazarus-0.9.26-clipboard-crash.patch @@ -0,0 +1,76 @@ + + Crashes on clipboard operations + + http://mantis.freepascal.org/view.php?id=12396 + +--- lcl/interfaces/gtk/gtkwidgetset.inc ++++ lcl/interfaces/gtk/gtkwidgetset.inc +@@ -5055,11 +5055,16 @@ + while (CurSelList<>nil) do begin + TargetSelList := CurSelList^.Data; + gtk_target_list_unref(TargetSelList^.List); ++ {$ifndef gtk1} ++ if (gtk_major_version = 2) and (gtk_minor_version > 12) and (@g_slice_free1 <> nil) then ++ g_slice_free1(SizeOf(TGtkTargetSelectionList), TargetSelList) ++ else ++ {$endif} + g_free(TargetSelList); + CurSelList := CurSelList^.Next; + end; + g_list_free(SelectionLists); +- gtk_object_set_data (PGtkObject(Widget),gtk_selection_handler_key,GtkNil); ++ gtk_object_set_data (PGtkObject(Widget), gtk_selection_handler_key, GtkNil); + {$IFDEF DEBUG_CLIPBOARD} + DebugLn(' ClearTargetLists WWW END'); + {$ENDIF} +--- lcl/interfaces/gtk/gtkextra.pp ++++ lcl/interfaces/gtk/gtkextra.pp +@@ -54,4 +54,11 @@ + {$I gtk2extra.inc} + {$endif} + ++{$ifdef gtk2} ++initialization ++ Initialize; ++finalization ++ Finalize; ++{$endif} ++ + end. +--- lcl/interfaces/gtk2/gtk2extra.inc ++++ lcl/interfaces/gtk2/gtk2extra.inc +@@ -53,3 +53,16 @@ + end; + {$endif} + ++procedure Initialize; ++begin ++ Pointer(g_slice_free1) := nil; ++ glibhandle := LoadLibrary(gliblib); ++ if glibhandle <> 0 then ++ Pointer(g_slice_free1) := GetProcAddress(glibhandle, 'g_slice_free1'); ++end; ++ ++procedure Finalize; ++begin ++ if glibhandle <> 0 then ++ FreeLibrary(glibhandle); ++end; +--- lcl/interfaces/gtk2/gtk2extrah.inc ++++ lcl/interfaces/gtk2/gtk2extrah.inc +@@ -23,7 +23,7 @@ + {$ifdef HasGdk2X} + gdk2x, + {$endif} +- Pango; ++ Pango, dynlibs; + + const + gdkdll = gdklib; +@@ -190,3 +190,6 @@ + {$ifdef GTK_2_10} + function gdk_screen_is_composited(screen: PGdkScreen): gboolean; cdecl; external gdklib; + {$endif} ++var ++ glibhandle: PtrUInt = 0; ++ g_slice_free1: procedure(block_size:gsize; mem_block:gpointer); cdecl; |