[#41581] Ruby 1.6.7 dieing of segfault — Dossy <dossy@...>

I've got something that's fairly reproducible in 1.6.7. Is

11 messages 2002/06/02
[#41582] Re: Ruby 1.6.7 dieing of segfault — Nobuyoshi Nakada <nobu.nokada@...> 2002/06/02

Hi,

[#41660] dynamic attr_accessor?? — Markus Jais <mjais@...>

hello

16 messages 2002/06/03

[#41755] HTML Parser suggestions wanted — Ned Konz <ned@...>

I've written an HTML parser that builds trees from HTML source. After

13 messages 2002/06/04

[#41809] eval and local variable — "Park Heesob" <phasis@...>

15 messages 2002/06/05

[#41819] mod_ruby and module space — "Sean O'Dell" <sean@...>

It seems that if I execute a script using mod_ruby, I cannot call

18 messages 2002/06/05

[#41867] Pascal-like 'with' statement? — Philip Mak <pmak@...>

Is there something like Pascal's with statement? I'd like to turn this

18 messages 2002/06/06

[#41919] 1-second events — Paul Brannan <pbrannan@...>

I need to create an event that occurs exactly once per second.

15 messages 2002/06/06

[#42086] ANN: REXML 2.3.5 && 2.2.3 — Sean Russell <ser@...>

<posted & mailed>

31 messages 2002/06/09
[#42091] Re: ANN: REXML 2.3.5 && 2.2.3 — Sean Russell <ser@...> 2002/06/09

<posted & mailed>

[#42092] RE: ANN: REXML 2.3.5 && 2.2.3 — <james@...> 2002/06/09

> Well, XMLSchema may be troublesome to interpret, but it isn't

[#42192] ruby-dev summary 17252-17356 — Minero Aoki <aamine@...>

Hi all,

81 messages 2002/06/11
[#42290] Re: a new block parameter/variable notation (Re: ruby-dev summary 17252-17356) — Kent Dahl <kentda@...> 2002/06/12

Not wanting to flog a dead horse, but I just wonder what the final word

[#42295] Re: a new block parameter/variable notation (Re: ruby-dev summary 17252-17356) — matz@... (Yukihiro Matsumoto) 2002/06/12

Hi,

[#42455] Application server & web developement enviroment — "Radu M. Obad磚 <whizkid@...>

Howdy,

14 messages 2002/06/14
[#42459] Re: Application server & web developement enviroment — Austin Ziegler <austin@...> 2002/06/14

On Fri, 14 Jun 2002 15:55:31 +0900, Radu M. Obadwrote:

[#42472] ANN: Programmierung in Ruby — "Juergen Katins" <katins.juergen@...>

Programmierung in Ruby Online gibt es jetzt mit ausfrlichem

14 messages 2002/06/14

[#42504] Are Unix tools just slow? — Chris Gehlker <gehlker@...>

Awhile back I was asking for help with a unixy way to search the mounted

48 messages 2002/06/14
[#42516] Re: Are Unix tools just slow? — "Daniel P. Zepeda" <daniel@...> 2002/06/15

On Sat, 15 Jun 2002 07:14:38 +0900

[#42506] Re: Are Unix tools just slow? — Rick Bradley <rick@...> 2002/06/14

* Chris Gehlker (gehlker@fastq.com) [020614 17:18]:

[#42512] Re: Are Unix tools just slow? — Chris Gehlker <gehlker@...> 2002/06/15

On 6/14/02 3:34 PM, "Rick Bradley" <rick@rickbradley.com> wrote:

[#42513] opengl for ruby, please help — ccos <ccos@...> 2002/06/15

unix newby failing miserably here:

[#42507] mpg123 — Tobias Reif <tobiasreif@...>

Hi,

15 messages 2002/06/14

[#42546] File.new('foo', 0600 , 'wb') — Tobias Reif <tobiasreif@...>

Hi,

21 messages 2002/06/15
[#42552] Re: File.new('foo', 0600 , 'wb') — Tobias Reif <tobiasreif@...> 2002/06/15

Dossy wrote:

[#42591] Kernel#select questions — Wilkes Joiner <boognish23@...>

I'm trying to track down a bug where Kernel#select is returning [[],[],[]] as

12 messages 2002/06/17

[#42617] eRuby on Mac OS X — Jim Menard <jimm@...>

I've searched ruby-talk for this topic, and the only messages I found show

13 messages 2002/06/17

[#42674] REXML in C — "Radu M. Obad磚 <whizkid@...>

Hi,

20 messages 2002/06/18

[#42771] Why is I/O slow? — Clifford Heath <cjh_nospam@...>

Ok, folk, time to try again. It's nothing to do with SHA-1.

61 messages 2002/06/20
[#42831] Re: Why is I/O slow? — Clifford Heath <cjh_nospam@...> 2002/06/21

Yukihiro Matsumoto wrote:

[#42836] RE: Why is I/O slow? — "Mike Campbell" <michael_s_campbell@...> 2002/06/21

> With respect, this doesn't sound like a smart idea. The glibc folk have

[#42838] Re: Why is I/O slow? — Albert Wagner <alwagner@...> 2002/06/21

On Thursday 20 June 2002 10:10 pm, Mike Campbell wrote:

[#42839] Re: Why is I/O slow? — Austin Ziegler <austin@...> 2002/06/21

On Fri, 21 Jun 2002 12:16:24 +0900, Albert Wagner wrote:

[#42928] GOOD DEAL — "DR. ISA BELLO" <dr_isa@...>

FROM:DR ISA BELLO

11 messages 2002/06/22

[#42982] No exceptions from String#to_i — "Hal E. Fulton" <hal9000@...>

I've been bitten by this before... maybe

19 messages 2002/06/24
[#42983] Re: No exceptions from String#to_i — ts <decoux@...> 2002/06/24

>>>>> "H" == Hal E Fulton <hal9000@hypermetrics.com> writes:

[#42986] Re: No exceptions from String#to_i — Nikodemus Siivola <tsiivola@...> 2002/06/24

[#43122] Re: help (ruby-talk ML) — Benjamin Peterson <bjsp123@...>

20 messages 2002/06/27
[#43123] Re: help (ruby-talk ML) — Dave Thomas <Dave@...> 2002/06/27

Benjamin Peterson <bjsp123@yahoo.com> writes:

[#43124] RE: help (ruby-talk ML) — Bob Calco <robert.calco@...> 2002/06/27

Yes, I would gladly volunteer considerable effort to this end. I have

[#43147] Ruby on Mac OS X — Tobias Reif <tobiasreif@...>

Hi,

24 messages 2002/06/28

[#43174] eruby SAFE question — Dylan Northrup <docx@...>

I'm trying to implement a replacement for the standard apache file listings

39 messages 2002/06/28
[#43249] documentation licenses (was: eruby SAFE question) — Tobias Reif <tobiasreif@...> 2002/06/30

Dave Thomas wrote:

[#43250] Re: documentation licenses (was: eruby SAFE question) — Dave Thomas <Dave@...> 2002/06/30

Tobias Reif <tobiasreif@pinkjuice.com> writes:

[#43255] RE: documentation licenses (was: eruby SAFE question) — <james@...> 2002/06/30

>

[#43280] Re: documentation licenses (was: eruby SAFE question) — "Juergen Katins" <juergen.katins@...> 2002/07/01

Tobias Reif wrote

[#43282] Re: documentation licenses (was: eruby SAFE question) — David Alan Black <dblack@...> 2002/07/01

On Mon, 1 Jul 2002, Juergen Katins wrote:

[#43381] RE: documentation licenses (was: eruby SAFE question) — <james@...> 2002/07/02

> From: David Alan Black [mailto:dblack@candle.superlink.net]

Re: []<<

From: Yohanes Santoso <ruby-talk@...>
Date: 2002-06-27 09:57:23 UTC
List: ruby-talk #43114
Tom Sawyer <transami@transami.net> writes:

> class Tt
>   #attr_accessor :h  # no access to h!
>   def initialize
>     @h = {}
>     @h['test'] = '1..'
>   end
>   def [](xp)        # only want to allow reading
>     @h[xp]
>   end
>   #def []=(xp, ap)  # no assignment allowed!
>   #  @h[xp] = [ap]
>   #end
> end
> tt = Tt.new


> tt['test'] << '..2'         # how come you can do me?
Of course it is valid, I would be surprised if it is not valid. In the
code above for class Tt, you didn't define any []= method. This means,
objects of class Tt does not respond to []=. But tt['test'] is not of
type Tt. It is of type String. So of course tt['test']<<'..2' is a
valid statement.

> tt['test'] = '1....2'       # if you can't do me!
Since Tt does not respond to []=, then this one is correctly invalid.

To make objects contained within @h readonly, you don't make the
container (Tt or @h) readonly. Instead you have to write a wrapper for
the objects within @h that limits access, or write an object that only
allows changes from the direct owner of the container (which is Tt).

Or if you want the easy way, use the dup/freeze as Kent suggested.

def [](xp)
  @h[xp].dup.freeze
end

>prob w/ freezing is as you said, it freezes up the instance on the
>inside too.

Which is why you dup it first.

>prob w/ dup is the loss of connection to the orig --later changes from
>within the class won't be reflected and changes on the outside will
>seemingly work enven though there is no actual reflection within.

If you want to maintain the connection, then you got to write a
wrapper for the objects within @h.

So, 
> it seems to me that the main point of accessors and the []= method is to
> control accessiblity to a class' instance variables. right? 

right

> but as this example shows, there are ways in which "back-doors"
>exist.

there is no backdoor. by using the accessor and the []= method, you
are controlling the class' instance variable. but once you give the
object that the instance variable refers to, all is game.

Perhaps, what you want is deep-freeze (similar to deep-copy). Then the
solution is similar to the deep-copy problem, you got to traverse each
object you control and wrap/freeze them.

YS.

In This Thread