[erlang-questions] Bug in code_server:del_path

Vlad Dumitrescu vladdu55@REDACTED
Thu Aug 2 22:32:31 CEST 2007


Hi!

For code:add_path* and code:replace_path, the code_server
implementation first applies a filename:join to the directory name,
normalizing it.

The implementation of del_path doesn't do the same, making it
impossible to remove paths that aren't already normalized (for example
if the drive letter in Windows is uppercased).

I couldn't test extensively, but I believe that the following change
will fix that.

delete_name_dir(Dir, Db) ->
    case get_name(Dir) of
	Dir  -> false;
	Name ->
-	    Dir0 = del_ebin(Dir),
+	    Dir0 = del_ebin(filename:join([Dir])),
	    case lookup_name(Name, Db) of
		{ok, Dir0} ->
		    ets:delete(Db, Name),
		    true;
		_ -> false
	    end
    end.

BTW, there is a code_server:normalize/1 function, why isn't that one
used for normalization?

best regards,
Vlad



More information about the erlang-questions mailing list