stevedekorte/io — pull request #250 by Teslos (2013-09-11 22:28:41+00:00)
Title: Changes IoState_registerProtoWithFunc_ to IoState_registerProtoWithId_

Hi,
According to https://github.com/stevedekorte/io/issues/210 the RegexMatch is causing problems.
As I explained in the post to issue 210 the problem is probably IoState_registerProtoWithFunc_ call.
Changing the call to IoState_registerProtoWithId_ solves this issue. I currently tested on two platforms:
1.) Darwin 12.4.0 Darwin Kernel Version 12.4.0: with: Apple clang version 4.0 (tags/Apple/clang-421.0.60) (based on LLVM 3.1svn)
2.) Linux 2.6.32-358.6.2.el6.x86_64 with icc version 12.1.2 (gcc version 4.4.7 compatibility)
Sample run:
```
Io 20110905
Io> r := Regex clone with("a")
Registering Regex: Regex
==> "a" asRegex
Io> "a" matchesOfRegex(r) next
==> RegexMatch: "a"
Io>
```
The same issue is causing problems with Cairo library on my mac.
I would test my branch also on Windows platform soon.
However there is a problem with Cairo library:
```
Io> surface := Cairo ImageSurface create(1, 256, 256)
==> Surface_0x7f899c8a13c0:
```
returns Surface object which doesn't respond to writeToPNG message, so most of examples do not work.
If the backend is changed to SVGSurface in the Sample code everything works ok:
```
Sample := Object clone
Sample context := method(
appendProto(Cairo)
filename := call message label asMutable removeSuffix(".io") appendSeq(".svg")
filename println
surface := SVGSurface create(filename, 256, 256)
Context create(surface) do(
appendProto(Cairo)

pi := Number constants pi

_do := getSlot("do")
do := method(
scale(256, 256)
setLineWidth(0.04)

m := Message clone setName("_do") appendArg(call argAt(0))
self perform(m)
getTarget finish
)
)
)
```

I hope this helps a little bit with this problem.

Best regards,
∃teslos