The docs for SvRX and SvRXOK still refered to magic and the code snippet
authorDavid Leadbeater <dgl@dgl.cx>
Wed, 8 Dec 2010 00:46:53 +0000 (16:46 -0800)
committerFather Chrysostomos <sprout@cpan.org>
Wed, 8 Dec 2010 00:47:44 +0000 (16:47 -0800)
was wrong.

regexp.h

index 5acdc5e..9bba272 100644 (file)
--- a/regexp.h
+++ b/regexp.h
@@ -190,20 +190,17 @@ equivalent to the following snippet:
 
     if (SvMAGICAL(sv))
         mg_get(sv);
-    if (SvROK(sv) &&
-        (tmpsv = (SV*)SvRV(sv)) &&
-        SvTYPE(tmpsv) == SVt_PVMG &&
-        (tmpmg = mg_find(tmpsv, PERL_MAGIC_qr)))
-    {
-        return (REGEXP *)tmpmg->mg_obj;
-    }
+    if (SvROK(sv))
+        sv = MUTABLE_SV(SvRV(sv));
+    if (SvTYPE(sv) == SVt_REGEXP)
+        return (REGEXP*) sv;
 
 NULL will be returned if a REGEXP* is not found.
 
 =for apidoc Am|bool|SvRXOK|SV* sv
 
-Returns a boolean indicating whether the SV contains qr magic
-(PERL_MAGIC_qr).
+Returns a boolean indicating whether the SV (or the one it references)
+is a REGEXP.
 
 If you want to do something with the REGEXP* later use SvRX instead
 and check for NULL.