method get_iter = function
| `LINECHAR (l,c) ->
let line = max 0 (min (buffer#line_count - 1) l) in
let it1 = buffer#get_iter (`LINECHAR (line,0)) in
let chars = it1#chars_in_line -
(if line = buffer#line_count - 1 then 0 else 1)
in
let c = max 0 (min c chars) in
buffer#get_iter (`LINECHAR (line,c))
| loc -> buffer#get_iter loc