Axel Simon <axel.si...@in.tum.de> writes: > On 29.06.2010, at 10:14, Andy Stewart wrote: > >> Axel Simon <axel.si...@in.tum.de> writes: >> >>> Hi Andy, >>> >>> I don't think this behaviour is always desirable for all applications. >>> Some applications might prefer to catch an error exception while >>> others might be happy to simply ignore the error as your fix would do. >>> >>> In which situations do these functions not work for you? Couldn't you >>> use some other utf8 Haskell package to check for the correctness of >>> strings? >> I think we should add string information in error, then it's easier to >> track if user don't catch fromUTF error. >> >> Something like this: >> >> ------------------------------> new fromUTF start >> <------------------------------ >> fromUTF :: String -> String >> fromUTF [] = [] >> fromUTF (all@(x:xs)) | ord x<=0x7F = x:fromUTF xs >> | ord x<=0xBF = err all >> | ord x<=0xDF = twoBytes all >> | ord x<=0xEF = threeBytes all >> | otherwise = err all > > You should just pass xs... > > >> where >> twoBytes (x1:x2:xs) = chr (((ord x1 .&. 0x1F) `shift` 6) .|. >> (ord x2 .&. 0x3F)):fromUTF xs >> twoBytes str = error ("fromUTF: " ++ str ++ " has illegal two byte >> sequence!") >> >> threeBytes (x1:x2:x3:xs) = chr (((ord x1 .&. 0x0F) `shift` 12) .|. >> ((ord x2 .&. 0x3F) `shift` 6) .|. >> (ord x3 .&. 0x3F)):fromUTF xs >> threeBytes str = error ("fromUTF: " ++ str ++ " has illegal three byte >> sequence!") >> >> err str = error ("fromUTF: " ++ str ++ " has illegal UTF-8 >> character!") > > ...and say "fromUTF: illegal character in front of \""++take 10 xs"\"!) > > I think your intention was to show the whole string. But you only show the > illegal character first > which is probably not a good idea (although xs might be illegal, too). Because some C function's document is weak, it's might to use peekUTFString/readUTFString incorrectly.
So i want add entrie string in 'error' to figure out wrong binding, if just print first illegal character, less help... > > Actually storing the whole text for the error message is probably a bad idea > since that would > constitute a space leak. Hmm, indeed. Maybe i should remove this patch to avoid space leak even it's make me hard to debug. Cheers, -- Andy > > Cheers, > Axel > >> ------------------------------> new fromUTF end >> <------------------------------ >> >> What do you think? >> >> -- Andy >> >>> >>> Cheers, >>> Axel >>> >>> On 29.06.2010, at 08:34, Andy Stewart wrote: >>> >>>> 1 patch for repository andystew...@code.haskell.org:/srv/code/ >>>> gtk2hs: >>>> >>>> Tue Jun 29 14:32:43 CST 2010 Andy Stewart <lazycat.mana...@gmail.com >>>> > >>>> * Use traceShow replace error provide safer fromUTF. >>>> >>>> New patches: >>>> >>>> [Use traceShow replace error provide safer fromUTF. >>>> Andy Stewart <lazycat.mana...@gmail.com>**20100629063243 >>>> Ignore-this: 4ccec77e1d2b1405b979e14ec1818077 >>>> ] { >>>> hunk ./glib/System/Glib/UTFString.hs 50 >>>> >>>> import Control.Monad (liftM) >>>> import Data.Char (ord, chr) >>>> +import Debug.Trace >>>> >>>> import System.Glib.FFI >>>> >>>> hunk ./glib/System/Glib/UTFString.hs 170 >>>> fromUTF :: String -> String >>>> fromUTF [] = [] >>>> fromUTF (all@(x:xs)) | ord x<=0x7F = x:fromUTF xs >>>> - | ord x<=0xBF = err >>>> + | ord x<=0xBF = noconvert all >>>> | ord x<=0xDF = twoBytes all >>>> | ord x<=0xEF = threeBytes all >>>> hunk ./glib/System/Glib/UTFString.hs 173 >>>> - | otherwise = err >>>> + | otherwise = noconvert all >>>> where >>>> twoBytes (x1:x2:xs) = chr (((ord x1 .&. 0x1F) `shift` 6) .|. >>>> (ord x2 .&. 0x3F)):fromUTF xs >>>> hunk ./glib/System/Glib/UTFString.hs 177 >>>> - twoBytes _ = error "fromUTF: illegal two byte sequence" >>>> + twoBytes str = traceShow ("fromUTF Warning: " ++ str ++ " has >>>> illegal two byte sequence, no convert!") str >>>> >>>> threeBytes (x1:x2:x3:xs) = chr (((ord x1 .&. 0x0F) `shift` 12) .|. >>>> ((ord x2 .&. 0x3F) `shift` 6) .|. >>>> hunk ./glib/System/Glib/UTFString.hs 182 >>>> (ord x3 .&. 0x3F)):fromUTF xs >>>> - threeBytes _ = error "fromUTF: illegal three byte sequence" >>>> + threeBytes str = traceShow ("fromUTF Warning: " ++ str ++ " has >>>> illegal three byte sequence, no convert!") str >>>> >>>> hunk ./glib/System/Glib/UTFString.hs 184 >>>> - err = error "fromUTF: illegal UTF-8 character" >>>> + noconvert str = traceShow ("fromUTF Warning: " ++ str ++ " has >>>> illegal UTF-8 character, no convert!") str >>>> >>>> -- Offset correction for String to UTF8 mapping. >>>> -- >>>> } >>>> >>>> Context: >>>> >>>> [Update Embedded demos. >>>> Andy Stewart <lazycat.mana...@gmail.com>**20100628072541 >>>> Ignore-this: 1792a53558175309e474755b2fd170ab >>>> ] >>>> [Add function drawableGetID. >>>> Andy Stewart <lazycat.mana...@gmail.com>**20100628071306 >>>> Ignore-this: 66f80a911f63867209160d53e51c8498 >>>> ] >>>> [Fix freeHaskellFunPtr problem in Clipboard.chs >>>> Andy Stewart <lazycat.mana...@gmail.com>**20100627113550 >>>> Ignore-this: efa86a719456d15b01eaaed62393f78f >>>> ] >>>> [Apply Oleg's patch to fix clipboardRequestTargets segfault. >>>> Andy Stewart <lazycat.mana...@gmail.com>**20100627103336 >>>> Ignore-this: 5602ff1727f889cdccc5bc2cb0f7353c >>>> ] >>>> [Add MPlayer client demo. >>>> Andy Stewart <lazycat.mana...@gmail.com>**20100617090640 >>>> Ignore-this: 5a8ab681c148ca07f27f768f9f62b1b7 >>>> ] >>>> [Move hierarchy.list to gtk package (Don't need reinstall gtk2hs- >>>> buildtools after add new type) >>>> Andy Stewart <lazycat.mana...@gmail.com>**20100604131309 >>>> Ignore-this: d3f52ea66e784a2ecd66d764571f58a9 >>>> ] >>>> [Move hierarchy.list to gio package (Don't need reinstall gtk2hs- >>>> buildtools after add new type) >>>> Andy Stewart <lazycat.mana...@gmail.com>**20100604130442 >>>> Ignore-this: 7539a9c035e4f25ac54d619c92021f49 >>>> ] >>>> [Move hierarchy.list to pango package (Don't need reinstall gtk2hs- >>>> buildtools after add new type) >>>> Andy Stewart <lazycat.mana...@gmail.com>**20100604130210 >>>> Ignore-this: b2ebce6749cf1083f3810e6175ceb1a2 >>>> ] >>>> [Fix INSTALL >>>> Andy Stewart <lazycat.mana...@gmail.com>**20100604095408 >>>> Ignore-this: 832b7cff47d7200ee89ee797981febee >>>> ] >>>> [Create Gtk specific versions of functions that add something to the >>>> main loop. These specific functions acquire the Gtk lock before >>>> executing the action which the documentation promised but... >>>> axel.si...@in.tum.de**20100603153700] >>>> [Improve signal `queryTooltip` >>>> Andy Stewart <lazycat.mana...@gmail.com>**20100602070555 >>>> Ignore-this: 4b625d69ebb779f22ec57ae0cc5223aa >>>> ] >>>> [Add MenuToolButton support functions for Tooltip.chs >>>> Andy Stewart <lazycat.mana...@gmail.com>**20100601165857 >>>> Ignore-this: 9e153056f052f09f3bf7bd5569ce347c >>>> ] >>>> [Fix `widgetTooltipMarkup` and docs. >>>> Andy Stewart <lazycat.mana...@gmail.com>**20100601144701 >>>> Ignore-this: 3fc33fd561f18f221d8b7b0215c71826 >>>> ] >>>> [Fix function `tooltipSetMarkup` >>>> Andy Stewart <lazycat.mana...@gmail.com>**20100601143948 >>>> Ignore-this: b4af7ecca1bc74b22e20727f33729a8b >>>> ] >>>> [Add Widget support functions for Tooltip.chs >>>> Andy Stewart <lazycat.mana...@gmail.com>**20100601140304 >>>> Ignore-this: 6b10098119f7a416d763c834bd892cae >>>> ] >>>> [Add Tooltip.chs (The new module to replace Tooltips.chs) >>>> Andy Stewart <lazycat.mana...@gmail.com>**20100601131828 >>>> Ignore-this: ca64d1d45d3c526494a41fb537d16c6c >>>> ] >>>> [Clean bootstrap.sh >>>> Andy Stewart <lazycat.mana...@gmail.com>**20100601122113 >>>> Ignore-this: f59b5f9bf21945c39258a39432621a03 >>>> ] >>>> [Note that Cabal 1.8 is required for ghci support under Windows. >>>> axel.si...@in.tum.de**20100527181310 >>>> Ignore-this: 1c5fc3bb7ad83f5d1094e0083ddd9913 >>>> ] >>>> [Do not query g_object_get_type as it only exists in newer Gtk+ >>>> versions. >>>> axel.si...@in.tum.de**20100527163435 >>>> Ignore-this: 70d62f66a2eb159c7fd3e23079c5debf >>>> ] >>>> [Remove gnomevfs sourceview mozembed since those packages has >>>> deprecated. >>>> Andy Stewart <lazycat.mana...@gmail.com>**20100527124728 >>>> Ignore-this: a1dfda3669b7417a7b09c3b4acfaa2d >>>> >>>> Below are backup repositories for those deprecated packages: >>>> >>>> * gnomevfs : http://www2.in.tum.de/~simona/gnomevfs/ >>>> * sourceview : http://www2.in.tum.de/~simona/sourceview/ >>>> * mozembed : http://www2.in.tum.de/~simona/mozembed/ >>>> >>>> ] >>>> [Fix IconTheme.chs docs. >>>> Andy Stewart <lazycat.mana...@gmail.com>**20100527102140 >>>> Ignore-this: 2f2b7ab508c688cc73f1b59012966d13 >>>> ] >>>> [Fix Gtk2HsSetup.hs bug. >>>> Andy Stewart <lazycat.mana...@gmail.com>**20100527095530 >>>> Ignore-this: 1b65945da174e05d0ad2a1f01e2ee651 >>>> ] >>>> [Add gnomevfs demo directory. >>>> Andy Stewart <lazycat.mana...@gmail.com>**20100527061234 >>>> Ignore-this: 40c6dd74b460d7546937212dacf1f9e1 >>>> ] >>>> [Add gtk demo directory. >>>> Andy Stewart <lazycat.mana...@gmail.com>**20100527061041 >>>> Ignore-this: 876a827c6f1bac1a8b26a99cd68c6005 >>>> ] >>>> [Add cairo demo directory. >>>> Andy Stewart <lazycat.mana...@gmail.com>**20100527051924 >>>> Ignore-this: b1a70c2a24812fb84c899e4e8ce3ca6c >>>> ] >>>> [Add pango demo directory. >>>> Andy Stewart <lazycat.mana...@gmail.com>**20100527051205 >>>> Ignore-this: af1ff611ab459ee2b6c5bc09a3f63c11 >>>> ] >>>> [Fix the license of gnomevfs >>>> Andy Stewart <lazycat.mana...@gmail.com>**20100527035350 >>>> Ignore-this: 9ac7c768af168d6f0c7af8c8790e8643 >>>> ] >>>> [Fix the license of gio. >>>> axel.si...@in.tum.de**20100526152125 >>>> Ignore-this: 42fe27de2030e0395227f889ba5345d8 >>>> ] >>>> [Fix Trac #1164. toGSList was reversing lists. >>>> m.ni...@gmail.com**20090514122933 >>>> Ignore-this: c466eadbc5ae61ba71721fe15b44735a >>>> ] >>>> [Remove gconf glade gstreamer gtkglext gtksourceview2 soegtk >>>> svgcairo vte webkit since these all now have their own repos. >>>> axel.si...@in.tum.de**20100525211947] >>>> [Documentation fix for EventM. >>>> axel.si...@in.tum.de**20100525131428 >>>> Ignore-this: 25c3bf3513ec6467cbd0febe397ab53e >>>> ] >>>> [Put upper bounds on base version. >>>> axel.si...@in.tum.de**20100525082101 >>>> Ignore-this: f92b2d9970c436c9fcbcf141fc988e8 >>>> ] >>>> [Make documentation parsable. >>>> axel.si...@in.tum.de**20100525080209 >>>> Ignore-this: 60f44b8251a9f3e933c874f72d8e8801 >>>> ] >>>> [Make the version test in pango less complex as Cabal 1.6 doesn't >>>> parse it otherwise. >>>> axel.si...@in.tum.de**20100525075706 >>>> Ignore-this: f3446237cf66abf49e81bd4ba8ef9744 >>>> ] >>>> [Fix an incorrect pattern in windowSetIcon. >>>> axel.si...@in.tum.de**20100525075639 >>>> Ignore-this: eb596c778897b4ae4fd7f9a8dde59726 >>>> ] >>>> [Get rid of stock images under ./docs/reference/images >>>> Andy Stewart <lazycat.mana...@gmail.com>**20100524235315 >>>> Ignore-this: 1094aaf32c73ba189937e1beee24ee49 >>>> ] >>>> [Redirect image link to library.gnome.org and update image items to >>>> GTK+ 2.20 >>>> Andy Stewart <lazycat.mana...@gmail.com>**20100524233947 >>>> Ignore-this: f33362d57605d16365e4dfac59c01122 >>>> ] >>>> [Add an upper version to the requirement on base. >>>> axel.si...@in.tum.de**20100524211158] >>>> [Be more specific as to the prerequisites of packages. >>>> axel.si...@in.tum.de**20100524210210] >>>> [Fix docu. >>>> axel.si...@in.tum.de**20100524210157] >>>> [Make soegtk compile by fixing dependency on old-time and by not >>>> relying on Gtk 2.18. >>>> axel.si...@in.tum.de**20100524210032] >>>> [don't mention tools in the docs for unregistering. >>>> axel.si...@in.tum.de**20100524201401] >>>> [TAG 0.11.0 >>>> axel.si...@in.tum.de**20100524200857] >>>> Patch bundle hash: >>>> c1ef6d98be90249f1c95f9e9b3213e9ebcd20393 >>>> ------------------------------------------------------------------------------ >>>> This SF.net email is sponsored by Sprint >>>> What will you do first with EVO, the first 4G phone? >>>> Visit sprint.com/first -- >>> http://p.sf.net/sfu/sprint-com-first_______________________________________________ >>>> Gtk2hs-devel mailing list >>>> Gtk2hs-devel@lists.sourceforge.net >>>> https://lists.sourceforge.net/lists/listinfo/gtk2hs-devel >>> >>> >>> ------------------------------------------------------------------------------ >>> This SF.net email is sponsored by Sprint >>> What will you do first with EVO, the first 4G phone? >>> Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first >> >> >> ------------------------------------------------------------------------------ >> This SF.net email is sponsored by Sprint >> What will you do first with EVO, the first 4G phone? >> Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first >> _______________________________________________ >> Gtk2hs-devel mailing list >> Gtk2hs-devel@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/gtk2hs-devel ------------------------------------------------------------------------------ This SF.net email is sponsored by Sprint What will you do first with EVO, the first 4G phone? Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first _______________________________________________ Gtk2hs-devel mailing list Gtk2hs-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gtk2hs-devel