This is not important, I will just restart, but...
In the middle of an extensive editing session just now,
(using the new View beta,) I noticed this untamed behaviour:


>> split-path %index.r
== [%./index.r %index.r]   ; what?

>> split-path %index
== [%./index.r %index]   ; still crazy, let's investigate...

>> ?? split-path
split-path: func [
    {Splits a file or URL path. Returns a block containing path and target.}
    target [file! url!]
    /local file path p][
    p: %./index.r   ;;; <------------- ((( notice this line... )))
    path: parse/all target "/"
    if all [1 = length? path not empty? path/1] [
        change path either any ["./" = path/1 "." = path/1 all [any ["../" =
path/1 ".." = path/1] p: %../]] [none]
 [to-file path/1]
        all [slash = last target path/1 append path/1 slash]
        return head insert path p]
    foreach item path [if item [append item slash]]
    if (last target) <> slash [remove back tail last path]
    file: last path
    remove back tail path
    file: to-file file
    if (length? path) = 0 [insert path slash file: none]
    path: rejoin path file
    all [any [file = %. file = %..] file: dirize file]
    either file? target [
        reduce [to-file path file]] [
        reduce [to-url join (copy/part target head target) path file]
    ]
]

; just check the global context...
>> p
** Script Error: p has no value
** Near: p


Now, if you start a fresh rebol, you should see 'p
initialised to %./
But it was changed somehow.
How could any of my code modify the local 'p ?
(I was doing a lot of stuff with index.r files, and
I also patched path-thru slightly).
How did the value of p get changed? How did the value
escape from the local context of the function to be
modified somewhere else? I cannot see a way, but
perhaps some of you have ideas.

Anton.

-- 
To unsubscribe from this list, please send an email to
[EMAIL PROTECTED] with "unsubscribe" in the 
subject, without the quotes.

Reply via email to