Browse thread
[Caml-list] Stack Overflow... (recursion in try-statement)
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Oliver Bandel <oliver@f...> |
| Subject: | Re: [Caml-list] Stack Overflow... (recursion in try-statement) |
On Wed, 24 Apr 2002, Warp wrote: > > why does an stack overflow-error occur here? > > > > let rec traversedir dir = > > try ( [Unix.readdir dir] @ traversedir dir ) with > > End_of_file -> [];; > > > > > > I have not tried it with very deep directories, so > > I did not expect such an error... > > > > What is the problem here? > > Perhaps he's looping because ".." is also a dir. > You should try to do some print to figure it out A chdir from "/" to ".." will set the pwd to "/". But the catalog-entries are not infenite. So this can not be the problem here, because I'm not really traversing the directory. My code only does give back the list of entries of a directory (I gave the wrong name: the name is for the whole function/problem, but I only solved the part of the problem: to get *all* entries of a directory). But you are right with your hint, that I have to take care of "." and ".." when really traversing the directory-structure and performing actions on "." and "..". E.g. renaming of "." and ".." is not working, and the jump to "." or ".." can cause problems (in that I ran with my C-version of the program, because I have not thought about that problem => possible bugs surely will be done... ;-)). In the case of my problem the explanation with expanding the terms (order of evaluation/expanding) is the key. Ciao, Oliver ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners