Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Re^4: What does utf8::upgrade actually do.

by syphilis (Archbishop)
on Feb 18, 2021 at 14:25 UTC ( [id://11128522]=note: print w/replies, xml ) Need Help??


in reply to Re^3: What does utf8::upgrade actually do.
in thread What does utf8::upgrade actually do.

Hi Dave,

If we accept that croaking is acceptable whenever there's a codepoint > 0xff, then I believe that simply replacing SvPV_nolen() with SvPVbyte_nolen() takes care of the points you've raised.
It looks to me that SvPVbyte_nolen() croaks with "Wide character in subroutine entry" whenever there's a codepoint > 0xff.
I also considered using SvPVutf8_nolen() for when a codepoint > 0xff is encountered but, with the string "\x40\x{150}\x60", that leads to an integer value of 0x6090c540. It's not apparent to me that there's any value in going down that particular path.

As roboticus pointed out, there's also the matter of warnings and documentation to attend to.
I did consider simply croaking if the UTF8 flag is set. Given the mpz_import() spec, I think that could be justified ... but where's the challenge in adopting such a wise and practical solution ;-)

Anyway ... I think I've got the information I need. It's now just a matter of thinking it through in a sane and orderly fashion.

Thanks dave_the_m, roboticus and Tux.
I appreciate not only the fact that you replied, but also the time and effort that was put into composing those replies.

Cheers,
Rob
  • Comment on Re^4: What does utf8::upgrade actually do.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11128522]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others lurking in the Monastery: (4)
As of 2025-02-07 07:35 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Which URL do you most often use to access this site?












    Results (94 votes). Check out past polls.