You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@lucy.apache.org by "Nick Wellnhofer (JIRA)" <ji...@apache.org> on 2015/05/16 20:31:00 UTC
[lucy-issues] [jira] [Commented] (CLOWNFISH-44) Immutable Strings can be changed
from Perl
[ https://issues.apache.org/jira/browse/CLOWNFISH-44?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14546886#comment-14546886 ]
Nick Wellnhofer commented on CLOWNFISH-44:
------------------------------------------
Another note: If we copied string SVs before passing them as arguments, we wouldn't need the clone-on-incref hack. This means that we'd never have to copy string buffers under a COW-enabled Perl.
On the other hand, we also rely on clone-on-incref behavior to ensure thread safety.
> Immutable Strings can be changed from Perl
> ------------------------------------------
>
> Key: CLOWNFISH-44
> URL: https://issues.apache.org/jira/browse/CLOWNFISH-44
> Project: Apache Lucy-Clownfish
> Issue Type: Bug
> Components: Perl
> Reporter: Nick Wellnhofer
> Priority: Minor
>
> Perl can hold a reference to a string passed to Clownfish and subsequently change the string via this reference in a callback. This violates the assumption that Clownfish strings are immutable and can lead to crashes if the string buffer is reallocated.
> This scenario is somewhat contrived but for a proper fix, I think there's no other way than to always copy Perl strings passed as arguments. Fortunately, newer Perls support copy-on-write strings (default since 5.20) which makes this operation cheap.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)