[Win32utils-devel] PathIsURL and frozen strings
djberg96 at gmail.com
Sun Jul 13 10:32:18 EDT 2008
Park Heesob wrote:
> ----- Original Message -----
> From: "Daniel Berger" <djberg96 at gmail.com>
> To: "win32utils-devel" <win32utils-devel at rubyforge.org>
> Sent: Sunday, July 13, 2008 9:37 PM
> Subject: [Win32utils-devel] PathIsURL and frozen strings
>> Hi all,
>> I may have brought this up a long time ago, but I've forgotten. Why does
>> PathIsURL(path) fail if 'path' is frozen?
>> require 'windows/path'
>> include Windows::Path
>> path = "file://C:\\Documents and Settings\\djberge"
>> PathIsURL(path) # true
>> PathIsURL(path) # Boom!
>> TypeError: can't modify frozen string
>> from (eval):3:in `call'
>> from (eval):3:in `PathIsURL'
>> from (irb):9
>> Any ideas? I realize I can just dup the string, but I thought I'd ask.
> In the win32-api, the string type('P') denotes both input and output pointer
> Thus the string parameter can be modified and must not be frozen.
> In case of pure input string, you can define another parameter type and skip
> rb_str_modify(v_arg) (line #584 of win32/api.c)
Ah, yes, thanks. I suppose we could add an "S" prototype for pure input
strings, but I'm not sure the benefit outweighs the cost of adding yet
What do you think?
More information about the win32utils-devel