Another silent failure?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|

Another silent failure?

Schwab,Wilhelm K
I am playing with a new library and for kicks thought I would call its get-version function:

| buffer |
buffer := String new:80.
PLplotLibrary default cPlgver:buffer.
buffer.

The above appears to do nothing; the buffer remains blank, and there is no error raised from it.  I tried something more complicated involving external address and #alloc: and got the version number.  That is encouraging from a perspective of talking to the library, but then I had to square the above failure with my use of memcpy() not long ago (different topic).  In that case, I had real need to allocate a buffer in a fixed heap, but was told that I could ultimately copy from said buffer (which lives across multiple gcs and would move) into a ByteArray of the needed size, which would not move during the memcpy() call.  That worked.  So I tried

| buffer |
buffer := ByteArray new:80.
PLplotLibrary default cPlgver:buffer.
buffer asString.

and get the version number.  What's up?  Why is it ok to pass a byte array but not a string?  If there really is a difference, there should be an exception hinting that something is wrong and what it might be - right?

Bill



_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Another silent failure?

Henrik Sperre Johansen
How do you expect us to help you debug this?
Really?

Cheers,
Henry

On Sep 15, 2010, at 8:45 38PM, Schwab,Wilhelm K wrote:

> I am playing with a new library and for kicks thought I would call its get-version function:
>
> | buffer |
> buffer := String new:80.
> PLplotLibrary default cPlgver:buffer.
> buffer.
>
> The above appears to do nothing; the buffer remains blank, and there is no error raised from it.  I tried something more complicated involving external address and #alloc: and got the version number.  That is encouraging from a perspective of talking to the library, but then I had to square the above failure with my use of memcpy() not long ago (different topic).  In that case, I had real need to allocate a buffer in a fixed heap, but was told that I could ultimately copy from said buffer (which lives across multiple gcs and would move) into a ByteArray of the needed size, which would not move during the memcpy() call.  That worked.  So I tried
>
> | buffer |
> buffer := ByteArray new:80.
> PLplotLibrary default cPlgver:buffer.
> buffer asString.
>
> and get the version number.  What's up?  Why is it ok to pass a byte array but not a string?  If there really is a difference, there should be an exception hinting that something is wrong and what it might be - right?
>
> Bill
>
>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Another silent failure?

Schwab,Wilhelm K
I am interested in the opinions of helpful people who might have something constructive to add.



________________________________________
From: [hidden email] [[hidden email]] On Behalf Of Henrik Johansen [[hidden email]]
Sent: Wednesday, September 15, 2010 6:18 PM
To: [hidden email]
Subject: Re: [Pharo-project] Another silent failure?

How do you expect us to help you debug this?
Really?

Cheers,
Henry

On Sep 15, 2010, at 8:45 38PM, Schwab,Wilhelm K wrote:

> I am playing with a new library and for kicks thought I would call its get-version function:
>
> | buffer |
> buffer := String new:80.
> PLplotLibrary default cPlgver:buffer.
> buffer.
>
> The above appears to do nothing; the buffer remains blank, and there is no error raised from it.  I tried something more complicated involving external address and #alloc: and got the version number.  That is encouraging from a perspective of talking to the library, but then I had to square the above failure with my use of memcpy() not long ago (different topic).  In that case, I had real need to allocate a buffer in a fixed heap, but was told that I could ultimately copy from said buffer (which lives across multiple gcs and would move) into a ByteArray of the needed size, which would not move during the memcpy() call.  That worked.  So I tried
>
> | buffer |
> buffer := ByteArray new:80.
> PLplotLibrary default cPlgver:buffer.
> buffer asString.
>
> and get the version number.  What's up?  Why is it ok to pass a byte array but not a string?  If there really is a difference, there should be an exception hinting that something is wrong and what it might be - right?
>
> Bill
>
>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Another silent failure?

Guillermo Polito
In reply to this post by Schwab,Wilhelm K


On Wed, Sep 15, 2010 at 3:45 PM, Schwab,Wilhelm K <[hidden email]> wrote:
I am playing with a new library and for kicks thought I would call its get-version function:

| buffer |
buffer := String new:80.
PLplotLibrary default cPlgver:buffer.
buffer.

The above appears to do nothing; the buffer remains blank, and there is no error raised from it.  I tried something more complicated involving external address and #alloc: and got the version number.  That is encouraging from a perspective of talking to the library, but then I had to square the above failure with my use of memcpy() not long ago (different topic).  In that case, I had real need to allocate a buffer in a fixed heap, but was told that I could ultimately copy from said buffer (which lives across multiple gcs and would move) into a ByteArray of the needed size, which would not move during the memcpy() call.  That worked.  So I tried

| buffer |
buffer := ByteArray new:80.
PLplotLibrary default cPlgver:buffer.
buffer asString.

and get the version number.  What's up?  Why is it ok to pass a byte array but not a string?  If there really is a difference, there should be an exception hinting that something is wrong and what it might be - right?

I was taught that when objects can't answer a message the right way, they should raise an exception :).

BTW, I don't know the difference between ByteArray and String... so I have to do some research :)
 

Bill



_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Another silent failure?

Schwab,Wilhelm K
Guillermo,

I too was taught (more by life than formal education) that things should clearly succeed or fail, but that's not what is happening here, unless I am missing something really obvious.

Thanks!

Bill


________________________________________
From: [hidden email] [[hidden email]] On Behalf Of Guillermo Polito [[hidden email]]
Sent: Wednesday, September 15, 2010 9:38 PM
To: [hidden email]
Subject: Re: [Pharo-project] Another silent failure?

On Wed, Sep 15, 2010 at 3:45 PM, Schwab,Wilhelm K <[hidden email]<mailto:[hidden email]>> wrote:
I am playing with a new library and for kicks thought I would call its get-version function:

| buffer |
buffer := String new:80.
PLplotLibrary default cPlgver:buffer.
buffer.

The above appears to do nothing; the buffer remains blank, and there is no error raised from it.  I tried something more complicated involving external address and #alloc: and got the version number.  That is encouraging from a perspective of talking to the library, but then I had to square the above failure with my use of memcpy() not long ago (different topic).  In that case, I had real need to allocate a buffer in a fixed heap, but was told that I could ultimately copy from said buffer (which lives across multiple gcs and would move) into a ByteArray of the needed size, which would not move during the memcpy() call.  That worked.  So I tried

| buffer |
buffer := ByteArray new:80.
PLplotLibrary default cPlgver:buffer.
buffer asString.

and get the version number.  What's up?  Why is it ok to pass a byte array but not a string?  If there really is a difference, there should be an exception hinting that something is wrong and what it might be - right?

I was taught that when objects can't answer a message the right way, they should raise an exception :).

BTW, I don't know the difference between ByteArray and String... so I have to do some research :)


Bill



_______________________________________________
Pharo-project mailing list
[hidden email]<mailto:[hidden email]>
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Another silent failure?

Levente Uzonyi-2
In reply to this post by Schwab,Wilhelm K
On Wed, 15 Sep 2010, Schwab,Wilhelm K wrote:

> I am interested in the opinions of helpful people who might have something constructive to add.

Sorry, but don't expect any help with this attitude. Even the most helpful
people - like Henrik - can't help you, because you don't give enough
information about your problem.

Which platform do you use?
Which VM/image do you use?
What's the library you'd like to use?
Is #cPlgver: an FFI call or do you use Alien? Maybe something else?
What's the type of the argument it expects?
If it calls a library function, does it store the pointer you're passing
to it?
Can you share your code?


Levente

>
>
>
> ________________________________________
> From: [hidden email] [[hidden email]] On Behalf Of Henrik Johansen [[hidden email]]
> Sent: Wednesday, September 15, 2010 6:18 PM
> To: [hidden email]
> Subject: Re: [Pharo-project] Another silent failure?
>
> How do you expect us to help you debug this?
> Really?
>
> Cheers,
> Henry
>
> On Sep 15, 2010, at 8:45 38PM, Schwab,Wilhelm K wrote:
>
>> I am playing with a new library and for kicks thought I would call its get-version function:
>>
>> | buffer |
>> buffer := String new:80.
>> PLplotLibrary default cPlgver:buffer.
>> buffer.
>>
>> The above appears to do nothing; the buffer remains blank, and there is no error raised from it.  I tried something more complicated involving external address and #alloc: and got the version number.  That is encouraging from a perspective of talking to the library, but then I had to square the above failure with my use of memcpy() not long ago (different topic).  In that case, I had real need to allocate a buffer in a fixed heap, but was told that I could ultimately copy from said buffer (which lives across multiple gcs and would move) into a ByteArray of the needed size, which would not move during the memcpy() call.  That worked.  So I tried
>>
>> | buffer |
>> buffer := ByteArray new:80.
>> PLplotLibrary default cPlgver:buffer.
>> buffer asString.
>>
>> and get the version number.  What's up?  Why is it ok to pass a byte array but not a string?  If there really is a difference, there should be an exception hinting that something is wrong and what it might be - right?
>>
>> Bill
>>
>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Another silent failure?

Schwab,Wilhelm K
Levente,

FFI, Linux.  The point is that the code fails silently when given a string and performs as expected when given a byte array.  That is all the more unusual given that the pointer is typed as char* (if anything, I would expect the string to succeed).  Just a hunch at this point, it sure looks like something that goes wrong "down in the depths" and it does nothing rather than reporting an error.  My question should have been clear (Guillermo obviously got it): does anyone else consider that combination of behaviors to be a problem?  Silent failures are the order of the day in Squeak; I hope we will eliminate them in Pharo.

Yes, I can package and release the code.  Whether that will take the form of a quick example of what I suspect is a long-standing defect in FFI or a nice wrapper around PLplot will depend on how PLplot performs.

Windows device contexts are proving difficult to replace.  Otherwise, Microsoft can keep the OS.

Bill





________________________________________
From: [hidden email] [[hidden email]] On Behalf Of Levente Uzonyi [[hidden email]]
Sent: Wednesday, September 15, 2010 10:01 PM
To: [hidden email]
Subject: Re: [Pharo-project] Another silent failure?

On Wed, 15 Sep 2010, Schwab,Wilhelm K wrote:

> I am interested in the opinions of helpful people who might have something constructive to add.

Sorry, but don't expect any help with this attitude. Even the most helpful
people - like Henrik - can't help you, because you don't give enough
information about your problem.

Which platform do you use?
Which VM/image do you use?
What's the library you'd like to use?
Is #cPlgver: an FFI call or do you use Alien? Maybe something else?
What's the type of the argument it expects?
If it calls a library function, does it store the pointer you're passing
to it?
Can you share your code?


Levente

>
>
>
> ________________________________________
> From: [hidden email] [[hidden email]] On Behalf Of Henrik Johansen [[hidden email]]
> Sent: Wednesday, September 15, 2010 6:18 PM
> To: [hidden email]
> Subject: Re: [Pharo-project] Another silent failure?
>
> How do you expect us to help you debug this?
> Really?
>
> Cheers,
> Henry
>
> On Sep 15, 2010, at 8:45 38PM, Schwab,Wilhelm K wrote:
>
>> I am playing with a new library and for kicks thought I would call its get-version function:
>>
>> | buffer |
>> buffer := String new:80.
>> PLplotLibrary default cPlgver:buffer.
>> buffer.
>>
>> The above appears to do nothing; the buffer remains blank, and there is no error raised from it.  I tried something more complicated involving external address and #alloc: and got the version number.  That is encouraging from a perspective of talking to the library, but then I had to square the above failure with my use of memcpy() not long ago (different topic).  In that case, I had real need to allocate a buffer in a fixed heap, but was told that I could ultimately copy from said buffer (which lives across multiple gcs and would move) into a ByteArray of the needed size, which would not move during the memcpy() call.  That worked.  So I tried
>>
>> | buffer |
>> buffer := ByteArray new:80.
>> PLplotLibrary default cPlgver:buffer.
>> buffer asString.
>>
>> and get the version number.  What's up?  Why is it ok to pass a byte array but not a string?  If there really is a difference, there should be an exception hinting that something is wrong and what it might be - right?
>>
>> Bill
>>
>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Another silent failure?

Levente Uzonyi-2
On Wed, 15 Sep 2010, Schwab,Wilhelm K wrote:

> Levente,
>
> FFI, Linux.  The point is that the code fails silently when given a string and performs as expected when given a byte array.  That is all the more unusual given that the pointer is typed as char* (if anything, I would expect the string to succeed).  Just a hunch at this point, it sure looks like something that goes wrong "down in the depths" and it does nothing rather than reporting an error.  My question should have been clear (Guillermo obviously got it): does anyone else consider that combination of behaviors to be a problem?  Silent failures are the order of the day in Squeak; I hope we will eliminate them in Pharo.

So you think that you've found a bug in FFI, but instead of sharing more
information about the problem or reporting the bug to the developers,
you're blaming FFI and Squeak.
There are lots of FFI users who pass Strings to functions which expect
char*, and works for them. So, I'm pretty sure that if it's really a bug,
then it's specific to the library/VM combination you're trying to use.


Levente

>
> Yes, I can package and release the code.  Whether that will take the form of a quick example of what I suspect is a long-standing defect in FFI or a nice wrapper around PLplot will depend on how PLplot performs.
>
> Windows device contexts are proving difficult to replace.  Otherwise, Microsoft can keep the OS.
>
> Bill
>
>
>
>
>
> ________________________________________
> From: [hidden email] [[hidden email]] On Behalf Of Levente Uzonyi [[hidden email]]
> Sent: Wednesday, September 15, 2010 10:01 PM
> To: [hidden email]
> Subject: Re: [Pharo-project] Another silent failure?
>
> On Wed, 15 Sep 2010, Schwab,Wilhelm K wrote:
>
>> I am interested in the opinions of helpful people who might have something constructive to add.
>
> Sorry, but don't expect any help with this attitude. Even the most helpful
> people - like Henrik - can't help you, because you don't give enough
> information about your problem.
>
> Which platform do you use?
> Which VM/image do you use?
> What's the library you'd like to use?
> Is #cPlgver: an FFI call or do you use Alien? Maybe something else?
> What's the type of the argument it expects?
> If it calls a library function, does it store the pointer you're passing
> to it?
> Can you share your code?
>
>
> Levente
>
>>
>>
>>
>> ________________________________________
>> From: [hidden email] [[hidden email]] On Behalf Of Henrik Johansen [[hidden email]]
>> Sent: Wednesday, September 15, 2010 6:18 PM
>> To: [hidden email]
>> Subject: Re: [Pharo-project] Another silent failure?
>>
>> How do you expect us to help you debug this?
>> Really?
>>
>> Cheers,
>> Henry
>>
>> On Sep 15, 2010, at 8:45 38PM, Schwab,Wilhelm K wrote:
>>
>>> I am playing with a new library and for kicks thought I would call its get-version function:
>>>
>>> | buffer |
>>> buffer := String new:80.
>>> PLplotLibrary default cPlgver:buffer.
>>> buffer.
>>>
>>> The above appears to do nothing; the buffer remains blank, and there is no error raised from it.  I tried something more complicated involving external address and #alloc: and got the version number.  That is encouraging from a perspective of talking to the library, but then I had to square the above failure with my use of memcpy() not long ago (different topic).  In that case, I had real need to allocate a buffer in a fixed heap, but was told that I could ultimately copy from said buffer (which lives across multiple gcs and would move) into a ByteArray of the needed size, which would not move during the memcpy() call.  That worked.  So I tried
>>>
>>> | buffer |
>>> buffer := ByteArray new:80.
>>> PLplotLibrary default cPlgver:buffer.
>>> buffer asString.
>>>
>>> and get the version number.  What's up?  Why is it ok to pass a byte array but not a string?  If there really is a difference, there should be an exception hinting that something is wrong and what it might be - right?
>>>
>>> Bill
>>>
>>>
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> [hidden email]
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Another silent failure?

Schwab,Wilhelm K
Levente,

Wasn't it obvious that I thought I found a bug?  And yes, there are very long standing "features" that have not been fixed, so it is hardly unprecedented, especially when failure to raise an exception is involved.  The Squeak community clearly prefers "fail and ignore" to raising exceptions; they don't see them as defects.  Streams and the file system are littered with such problems.  The result is a lot of time wasted hunting down things that could have been obvious.  

However it is of course possible that it could be as you describe, or it could be a common trap.  That's why I posted a quick "have you ever seen this behavior?" question to be followed by what you want unless an explanation arises.  Not long ago, FFI was raising exceptions indicating that a parameter could not be coerced (or similar language) when the problem was in fact that I was using invalid parameter types in the call sequence.  IIRC, Andreas agreed and fixed it, but "lots of FFI users" had apparently not said anything.

Absent an explanation of how it would be be problematic, yes, it seems to me that either both byte objects should produce the same behavior, or one of them should raise an exception.

Bill


________________________________________
From: [hidden email] [[hidden email]] On Behalf Of Levente Uzonyi [[hidden email]]
Sent: Thursday, September 16, 2010 5:57 AM
To: [hidden email]
Subject: Re: [Pharo-project] Another silent failure?

On Wed, 15 Sep 2010, Schwab,Wilhelm K wrote:

> Levente,
>
> FFI, Linux.  The point is that the code fails silently when given a string and performs as expected when given a byte array.  That is all the more unusual given that the pointer is typed as char* (if anything, I would expect the string to succeed).  Just a hunch at this point, it sure looks like something that goes wrong "down in the depths" and it does nothing rather than reporting an error.  My question should have been clear (Guillermo obviously got it): does anyone else consider that combination of behaviors to be a problem?  Silent failures are the order of the day in Squeak; I hope we will eliminate them in Pharo.

So you think that you've found a bug in FFI, but instead of sharing more
information about the problem or reporting the bug to the developers,
you're blaming FFI and Squeak.
There are lots of FFI users who pass Strings to functions which expect
char*, and works for them. So, I'm pretty sure that if it's really a bug,
then it's specific to the library/VM combination you're trying to use.


Levente

>
> Yes, I can package and release the code.  Whether that will take the form of a quick example of what I suspect is a long-standing defect in FFI or a nice wrapper around PLplot will depend on how PLplot performs.
>
> Windows device contexts are proving difficult to replace.  Otherwise, Microsoft can keep the OS.
>
> Bill
>
>
>
>
>
> ________________________________________
> From: [hidden email] [[hidden email]] On Behalf Of Levente Uzonyi [[hidden email]]
> Sent: Wednesday, September 15, 2010 10:01 PM
> To: [hidden email]
> Subject: Re: [Pharo-project] Another silent failure?
>
> On Wed, 15 Sep 2010, Schwab,Wilhelm K wrote:
>
>> I am interested in the opinions of helpful people who might have something constructive to add.
>
> Sorry, but don't expect any help with this attitude. Even the most helpful
> people - like Henrik - can't help you, because you don't give enough
> information about your problem.
>
> Which platform do you use?
> Which VM/image do you use?
> What's the library you'd like to use?
> Is #cPlgver: an FFI call or do you use Alien? Maybe something else?
> What's the type of the argument it expects?
> If it calls a library function, does it store the pointer you're passing
> to it?
> Can you share your code?
>
>
> Levente
>
>>
>>
>>
>> ________________________________________
>> From: [hidden email] [[hidden email]] On Behalf Of Henrik Johansen [[hidden email]]
>> Sent: Wednesday, September 15, 2010 6:18 PM
>> To: [hidden email]
>> Subject: Re: [Pharo-project] Another silent failure?
>>
>> How do you expect us to help you debug this?
>> Really?
>>
>> Cheers,
>> Henry
>>
>> On Sep 15, 2010, at 8:45 38PM, Schwab,Wilhelm K wrote:
>>
>>> I am playing with a new library and for kicks thought I would call its get-version function:
>>>
>>> | buffer |
>>> buffer := String new:80.
>>> PLplotLibrary default cPlgver:buffer.
>>> buffer.
>>>
>>> The above appears to do nothing; the buffer remains blank, and there is no error raised from it.  I tried something more complicated involving external address and #alloc: and got the version number.  That is encouraging from a perspective of talking to the library, but then I had to square the above failure with my use of memcpy() not long ago (different topic).  In that case, I had real need to allocate a buffer in a fixed heap, but was told that I could ultimately copy from said buffer (which lives across multiple gcs and would move) into a ByteArray of the needed size, which would not move during the memcpy() call.  That worked.  So I tried
>>>
>>> | buffer |
>>> buffer := ByteArray new:80.
>>> PLplotLibrary default cPlgver:buffer.
>>> buffer asString.
>>>
>>> and get the version number.  What's up?  Why is it ok to pass a byte array but not a string?  If there really is a difference, there should be an exception hinting that something is wrong and what it might be - right?
>>>
>>> Bill
>>>
>>>
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> [hidden email]
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project