tags 634025 + patch
tags 634025 + pending
thanks

Dear maintainer,

I've prepared an NMU for libdata-compare-perl (versioned as 1.22-0.1) and
uploaded it to DELAYED/10. Please feel free to tell me if I
should delay it longer.

Regards.
diff -Nru libdata-compare-perl-1.21/ARTISTIC.txt 
libdata-compare-perl-1.22/ARTISTIC.txt
--- libdata-compare-perl-1.21/ARTISTIC.txt      1970-01-01 01:00:00.000000000 
+0100
+++ libdata-compare-perl-1.22/ARTISTIC.txt      2009-05-15 22:43:21.000000000 
+0200
@@ -0,0 +1,131 @@
+
+
+
+
+                        The "Artistic License"
+
+                               Preamble
+
+The intent of this document is to state the conditions under which a
+Package may be copied, such that the Copyright Holder maintains some
+semblance of artistic control over the development of the package,
+while giving the users of the package the right to use and distribute
+the Package in a more-or-less customary fashion, plus the right to make
+reasonable modifications.
+
+Definitions:
+
+       "Package" refers to the collection of files distributed by the
+       Copyright Holder, and derivatives of that collection of files
+       created through textual modification.
+
+       "Standard Version" refers to such a Package if it has not been
+       modified, or has been modified in accordance with the wishes
+       of the Copyright Holder as specified below.
+
+       "Copyright Holder" is whoever is named in the copyright or
+       copyrights for the package.
+
+       "You" is you, if you're thinking about copying or distributing
+       this Package.
+
+       "Reasonable copying fee" is whatever you can justify on the
+       basis of media cost, duplication charges, time of people involved,
+       and so on.  (You will not be required to justify it to the
+       Copyright Holder, but only to the computing community at large
+       as a market that must bear the fee.)
+
+       "Freely Available" means that no fee is charged for the item
+       itself, though there may be fees involved in handling the item.
+       It also means that recipients of the item may redistribute it
+       under the same conditions they received it.
+
+1. You may make and give away verbatim copies of the source form of the
+Standard Version of this Package without restriction, provided that you
+duplicate all of the original copyright notices and associated disclaimers.
+
+2. You may apply bug fixes, portability fixes and other modifications
+derived from the Public Domain or from the Copyright Holder.  A Package
+modified in such a way shall still be considered the Standard Version.
+
+3. You may otherwise modify your copy of this Package in any way, provided
+that you insert a prominent notice in each changed file stating how and
+when you changed that file, and provided that you do at least ONE of the
+following:
+
+    a) place your modifications in the Public Domain or otherwise make them
+    Freely Available, such as by posting said modifications to Usenet or
+    an equivalent medium, or placing the modifications on a major archive
+    site such as uunet.uu.net, or by allowing the Copyright Holder to include
+    your modifications in the Standard Version of the Package.
+
+    b) use the modified Package only within your corporation or organization.
+
+    c) rename any non-standard executables so the names do not conflict
+    with standard executables, which must also be provided, and provide
+    a separate manual page for each non-standard executable that clearly
+    documents how it differs from the Standard Version.
+
+    d) make other distribution arrangements with the Copyright Holder.
+
+4. You may distribute the programs of this Package in object code or
+executable form, provided that you do at least ONE of the following:
+
+    a) distribute a Standard Version of the executables and library files,
+    together with instructions (in the manual page or equivalent) on where
+    to get the Standard Version.
+
+    b) accompany the distribution with the machine-readable source of
+    the Package with your modifications.
+
+    c) give non-standard executables non-standard names, and clearly
+    document the differences in manual pages (or equivalent), together
+    with instructions on where to get the Standard Version.
+
+    d) make other distribution arrangements with the Copyright Holder.
+
+5. You may charge a reasonable copying fee for any distribution of this
+Package.  You may charge any fee you choose for support of this
+Package.  You may not charge a fee for this Package itself.  However,
+you may distribute this Package in aggregate with other (possibly
+commercial) programs as part of a larger (possibly commercial) software
+distribution provided that you do not advertise this Package as a
+product of your own.  You may embed this Package's interpreter within
+an executable of yours (by linking); this shall be construed as a mere
+form of aggregation, provided that the complete Standard Version of the
+interpreter is so embedded.
+
+6. The scripts and library files supplied as input to or produced as
+output from the programs of this Package do not automatically fall
+under the copyright of this Package, but belong to whoever generated
+them, and may be sold commercially, and may be aggregated with this
+Package.  If such scripts or library files are aggregated with this
+Package via the so-called "undump" or "unexec" methods of producing a
+binary executable image, then distribution of such an image shall
+neither be construed as a distribution of this Package nor shall it
+fall under the restrictions of Paragraphs 3 and 4, provided that you do
+not represent such an executable image as a Standard Version of this
+Package.
+
+7. C subroutines (or comparably compiled subroutines in other
+languages) supplied by you and linked into this Package in order to
+emulate subroutines and variables of the language defined by this
+Package shall not be considered part of this Package, but are the
+equivalent of input as in Paragraph 6, provided these subroutines do
+not change the language in any way that would cause it to fail the
+regression tests for the language.
+
+8. Aggregation of this Package with a commercial distribution is always
+permitted provided that the use of this Package is embedded; that is,
+when no overt attempt is made to make this Package's interfaces visible
+to the end user of the commercial distribution.  Such use shall not be
+construed as a distribution of this Package.
+
+9. The name of the Copyright Holder may not be used to endorse or promote
+products derived from this software without specific prior written permission.
+
+10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
+                               The End
diff -Nru libdata-compare-perl-1.21/CHANGES libdata-compare-perl-1.22/CHANGES
--- libdata-compare-perl-1.21/CHANGES   2008-09-01 18:30:23.000000000 +0200
+++ libdata-compare-perl-1.22/CHANGES   2010-02-12 01:02:02.000000000 +0100
@@ -1,49 +1,61 @@
-1.21  2008-08-21  DCANTRELL  Extra tests added in 1.20 now skip with
-                               really old JSON
+1.22    2010-02-12  DCANTRELL  Previous release was in error.  Instead, fix
+                                 the problem, circular structures now
+                                 compare equal, no matter what the starting
+                                 point (see RT 52836)
 
-1.20  2008-08-21  DCANTRELL  Added test for bug reported by Saritha
-                               Nalagandla (no bug found, but you can never
-                               have too many tests!)
-                             Fixed bug in PERL5LIB splitting in taint test
-                               (thanks to ADAMK, see RT 38319)
-
-1.19  2008-05-12  DCANTRELL  Can now compare structures with repeats in 'em
-                               like [\$z, \$z] (bug reported by Todd Hepler)
-                             Minor code tidying
-
-1.18  2008-01-15  DCANTRELL  Got rid of prototypes;
-                             File::Find::Rule now only loads when needed;
-                             Plugins can be ignored with a null import() list;
-                             Explicitly documented the auto-export;
-                             Got rid of diagnostics pragma
-
-0.17  2007-08-07  DCANTRELL  Added POD test
-                             Fixed buggy POD :-)
-                             Fixed problem with taint testing when PERL5LIB
-                               is set (thanks to Andreas Koenig for finding
-                               the bug)
-                             Minor doco fiddling
-0.16  2007-02-27  DCANTRELL  Taint test and detection made less stupid
-0.15  2007-02-25  DCANTRELL  Skip taint tests on perl 5.6 and earlier
-0.14  2006-11-01  DCANTRELL  Fixed deeply nested objects (see rt.cpan #6966)
-0.13  2004-11-09  DCANTRELL  Oops, left in some debugging output
-0.12  2004-11-09  DCANTRELL  Fixed recursion detection bug - wasn't 
decrementing
-                             counter properly!  (thanks to Jenda for the bug
-                             report)
-0.11  2004-06-02  DCANTRELL  Now taint-safe - in taint mode there's no plugins
-                             (thanks Gabor Szabo for reporting the bug)
-0.10  2004-03-13  DCANTRELL  Replaced recursion detection with Rusty Conover's
-                             much better implementation.
-0.09  2004-02-23  DCANTRELL  Added deep recursion detection.
-0.08  2004-01-20  DCANTRELL  Added options, and ignore_hash_keys
-0.07  2004-01-07  DCANTRELL  Bugfix to avoid loading same plugin more than
-                             once.  S::P plugin renamed so it would work with
-                             this bugfix.  Clean-up of code.  Fix minor doc-bug
-                             in lib/Data/Compare/Plugins.pod.
-0.06  2004-01-06  DCANTRELL  Added plugins, moved Scalar::Properties support
-                             into a plugin (plugins were Jim Cromie's idea)
-0.05  2003-12-30  DCANTRELL  Applied [email protected]'s patch for
-                             comparing compiled regexps
-0.04  2003-12-24  DCANTRELL  Applied aef's patch to correctly compare refs to
-                             refs to stuff
-0.03  2003-12-23  DCANTRELL  Added special-case handling for Scalar::Properties
+1.2102  2010-02-01  DCANTRELL  Add doco about structural vs data equivalence
+                                 (see RT 52836)
+
+1.2101  2009-05-05  DCANTRELL  Add full licence text; -I fix in taint tests
+                                 to cope with paths with a space in 'em
+                                 (thanks to MATISSE, see RT 45676)
+
+1.21    2008-08-21  DCANTRELL  Extra tests added in 1.20 now skip with
+                                 really old JSON
+
+1.20    2008-08-21  DCANTRELL  Added test for bug reported by Saritha
+                                 Nalagandla (no bug found, but you can never
+                                 have too many tests!)
+                               Fixed bug in PERL5LIB splitting in taint test
+                                 (thanks to ADAMK, see RT 38319)
+
+1.19    2008-05-12  DCANTRELL  Can now compare structures with repeats in 'em
+                                 like [\$z, \$z] (bug reported by Todd Hepler)
+                               Minor code tidying
+
+1.18    2008-01-15  DCANTRELL  Got rid of prototypes;
+                               File::Find::Rule now only loads when needed;
+                               Plugins can be ignored with a null import() 
list;
+                               Explicitly documented the auto-export;
+                               Got rid of diagnostics pragma
+
+0.17    2007-08-07  DCANTRELL  Added POD test
+                               Fixed buggy POD :-)
+                               Fixed problem with taint testing when PERL5LIB
+                                 is set (thanks to Andreas Koenig for finding
+                                 the bug)
+                               Minor doco fiddling
+0.16    2007-02-27  DCANTRELL  Taint test and detection made less stupid
+0.15    2007-02-25  DCANTRELL  Skip taint tests on perl 5.6 and earlier
+0.14    2006-11-01  DCANTRELL  Fixed deeply nested objects (see rt.cpan #6966)
+0.13    2004-11-09  DCANTRELL  Oops, left in some debugging output
+0.12    2004-11-09  DCANTRELL  Fixed recursion detection bug - wasn't 
decrementing
+                               counter properly!  (thanks to Jenda for the bug
+                               report)
+0.11    2004-06-02  DCANTRELL  Now taint-safe - in taint mode there's no 
plugins
+                               (thanks Gabor Szabo for reporting the bug)
+0.10    2004-03-13  DCANTRELL  Replaced recursion detection with Rusty 
Conover's
+                               much better implementation.
+0.09    2004-02-23  DCANTRELL  Added deep recursion detection.
+0.08    2004-01-20  DCANTRELL  Added options, and ignore_hash_keys
+0.07    2004-01-07  DCANTRELL  Bugfix to avoid loading same plugin more than
+                               once.  S::P plugin renamed so it would work with
+                               this bugfix.  Clean-up of code.  Fix minor 
doc-bug
+                               in lib/Data/Compare/Plugins.pod.
+0.06    2004-01-06  DCANTRELL  Added plugins, moved Scalar::Properties support
+                               into a plugin (plugins were Jim Cromie's idea)
+0.05    2003-12-30  DCANTRELL  Applied [email protected]'s patch for
+                               comparing compiled regexps
+0.04    2003-12-24  DCANTRELL  Applied aef's patch to correctly compare refs to
+                               refs to stuff
+0.03    2003-12-23  DCANTRELL  Added special-case handling for 
Scalar::Properties
diff -Nru libdata-compare-perl-1.21/GPL2.txt libdata-compare-perl-1.22/GPL2.txt
--- libdata-compare-perl-1.21/GPL2.txt  1970-01-01 01:00:00.000000000 +0100
+++ libdata-compare-perl-1.22/GPL2.txt  2009-05-15 22:43:21.000000000 +0200
@@ -0,0 +1,339 @@
+                   GNU GENERAL PUBLIC LICENSE
+                      Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                           Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                   GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                           NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                    END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff -Nru libdata-compare-perl-1.21/MANIFEST libdata-compare-perl-1.22/MANIFEST
--- libdata-compare-perl-1.21/MANIFEST  2008-09-01 18:30:47.000000000 +0200
+++ libdata-compare-perl-1.22/MANIFEST  2010-02-14 15:42:15.000000000 +0100
@@ -24,4 +24,7 @@
 t/saritha-nalagandla-bug.t
 t/saritha-nalagandla-bug/test082_updateevent_multipleinvitees.exp
 t/saritha-nalagandla-bug/test082_updateevent_multipleinvitees.out
+ARTISTIC.txt
+GPL2.txt
+t/coverage.sh
 META.yml                                 Module meta-data (added by MakeMaker)
diff -Nru libdata-compare-perl-1.21/META.yml libdata-compare-perl-1.22/META.yml
--- libdata-compare-perl-1.21/META.yml  2008-09-01 18:30:46.000000000 +0200
+++ libdata-compare-perl-1.22/META.yml  2010-02-14 15:42:15.000000000 +0100
@@ -1,12 +1,22 @@
-# http://module-build.sourceforge.net/META-spec.html
-#XXXXXXX This is a prototype!!!  It will change in the future!!! XXXXX#
-name:         Data-Compare
-version:      1.21
-version_from: lib/Data/Compare.pm
-installdirs:  site
+--- #YAML:1.0
+name:               Data-Compare
+version:            1.22
+abstract:           ~
+author:  []
+license:            unknown
+distribution_type:  module
+configure_requires:
+    ExtUtils::MakeMaker:  0
+build_requires:
+    ExtUtils::MakeMaker:  0
 requires:
-    File::Find::Rule:              0.1
-    Scalar::Util:                  0
-
-distribution_type: module
-generated_by: ExtUtils::MakeMaker version 6.30
+    File::Find::Rule:  0.1
+    Scalar::Util:      0
+no_index:
+    directory:
+        - t
+        - inc
+generated_by:       ExtUtils::MakeMaker version 6.50
+meta-spec:
+    url:      http://module-build.sourceforge.net/META-spec-v1.4.html
+    version:  1.4
diff -Nru libdata-compare-perl-1.21/debian/changelog 
libdata-compare-perl-1.22/debian/changelog
--- libdata-compare-perl-1.21/debian/changelog  2011-07-23 14:41:18.000000000 
+0200
+++ libdata-compare-perl-1.22/debian/changelog  2011-07-23 14:41:18.000000000 
+0200
@@ -1,3 +1,13 @@
+libdata-compare-perl (1.22-0.1) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * New upstream release. (Closes: #634025)
+  * debian/copyright: Refer to /usr/share/common-licenses/GPL-1; update years
+    of copyright.
+  * No longer install README: only has installation instructions.
+
+ -- Ansgar Burchardt <[email protected]>  Sat, 23 Jul 2011 14:35:58 +0200
+
 libdata-compare-perl (1.21-1) unstable; urgency=low
 
   * New maintainer. (Closes: #507394).
diff -Nru libdata-compare-perl-1.21/debian/copyright 
libdata-compare-perl-1.22/debian/copyright
--- libdata-compare-perl-1.21/debian/copyright  2011-07-23 14:41:18.000000000 
+0200
+++ libdata-compare-perl-1.22/debian/copyright  2011-07-23 14:41:18.000000000 
+0200
@@ -14,7 +14,7 @@
 Copyright:
 
     Copyright (C) 1999-2001 Fabien Tassin. All rights reserved. 
-    Some parts Copyright (C) 2003 - 2008 David Cantrell.
+    Some parts Copyright (C) 2003 - 2010 David Cantrell.
 
 License:
 
@@ -29,8 +29,8 @@
 
     b) the "Artistic License" which comes with Perl.
 
-    On Debian GNU/Linux systems, the complete text of the GNU General
-    Public License can be found in `/usr/share/common-licenses/GPL' and
+    On Debian systems, the complete text of version 1 of the GNU General
+    Public License can be found in `/usr/share/common-licenses/GPL-1' and
     the Artistic Licence in `/usr/share/common-licenses/Artistic'.
 
 The Debian packaging is Copyright (C) 2008,
diff -Nru libdata-compare-perl-1.21/debian/libdata-compare-perl.docs 
libdata-compare-perl-1.22/debian/libdata-compare-perl.docs
--- libdata-compare-perl-1.21/debian/libdata-compare-perl.docs  2011-07-23 
14:41:18.000000000 +0200
+++ libdata-compare-perl-1.22/debian/libdata-compare-perl.docs  2011-07-23 
14:41:18.000000000 +0200
@@ -1,2 +1 @@
 TODO
-README
diff -Nru libdata-compare-perl-1.21/lib/Data/Compare.pm 
libdata-compare-perl-1.22/lib/Data/Compare.pm
--- libdata-compare-perl-1.21/lib/Data/Compare.pm       2008-08-26 
22:51:36.000000000 +0200
+++ libdata-compare-perl-1.22/lib/Data/Compare.pm       2010-02-12 
01:00:27.000000000 +0100
@@ -1,9 +1,8 @@
-# $Id: Compare.pm,v 1.10 2008/08/26 20:51:36 drhyde Exp $
 # Data::Compare - compare perl data structures
 # Author: Fabien Tassin <[email protected]>
 # updated by David Cantrell <[email protected]>
 # Copyright 1999-2001 Fabien Tassin <[email protected]>
-# portions Copyright 2003 - 2008 David Cantrell
+# portions Copyright 2003 - 2010 David Cantrell
 
 package Data::Compare;
 
@@ -17,66 +16,63 @@
 
 @ISA     = qw(Exporter);
 @EXPORT  = qw(Compare);
-$VERSION = 1.21;
-$DEBUG   = 0;
+$VERSION = 1.22;
+$DEBUG   = $ENV{PERL_DATA_COMPARE_DEBUG} || 0;
 
 my %handler;
 
 use Cwd;
 
 sub import {
-    if(eval { chdir(getcwd()) }) { # chdir(getcwd()) isn't taint-safe
-        register_plugins();
-    }
-    __PACKAGE__->export_to_level(1, @EXPORT);
+  if(eval { chdir(getcwd()) }) { # chdir(getcwd()) isn't taint-safe
+    register_plugins();
+  }
+  __PACKAGE__->export_to_level(1, @EXPORT);
 }
 
 # finds and registers plugins
 sub register_plugins {
-    eval 'use File::Find::Rule';
-    foreach my $file (
-        File::Find::Rule
-            ->file()
-            ->name('*.pm')
-            ->in(
-               map { "$_/Data/Compare/Plugins" }
-               grep { -d "$_/Data/Compare/Plugins" }
-               @INC
-           )
-    ) {
-        # all of this just to avoid loading the same plugin twice and
-       # generating a pile of warnings. Grargh!
-        $file =~ s!.*(Data/Compare/Plugins/.*)\.pm$!$1!;
-       $file =~ s!/!::!g;
-       # ignore badly named example from earlier version, oops
-       next if($file eq 'Data::Compare::Plugins::Scalar-Properties');
-        my $requires = eval "require $file";
-       next if($requires eq '1'); # already loaded this plugin?
-
-       # not an arrayref? bail
-        if(ref($requires) ne 'ARRAY') {
-            warn("$file isn't a valid Data::Compare plugin (didn't return 
arrayref)\n");
-           return;
-        }
-       # coerce into arrayref of arrayrefs if necessary
-       if(ref((@{$requires})[0]) ne 'ARRAY') { $requires = [$requires] }
+  eval 'use File::Find::Rule';
+  foreach my $file (
+    File::Find::Rule->file()->name('*.pm')->in(
+      map { "$_/Data/Compare/Plugins" }
+      grep { -d "$_/Data/Compare/Plugins" }
+      @INC
+    )
+  ) {
+    # all of this just to avoid loading the same plugin twice and
+    # generating a pile of warnings. Grargh!
+    $file =~ s!.*(Data/Compare/Plugins/.*)\.pm$!$1!;
+    $file =~ s!/!::!g;
+    # ignore badly named example from earlier version, oops
+    next if($file eq 'Data::Compare::Plugins::Scalar-Properties');
+    my $requires = eval "require $file";
+    next if($requires eq '1'); # already loaded this plugin?
+
+    # not an arrayref? bail
+    if(ref($requires) ne 'ARRAY') {
+      warn("$file isn't a valid Data::Compare plugin (didn't return 
arrayref)\n");
+      return;
+    }
+    # coerce into arrayref of arrayrefs if necessary
+    if(ref((@{$requires})[0]) ne 'ARRAY') { $requires = [$requires] }
 
-        # register all the handlers
-        foreach my $require (@{$requires}) {
-            my($handler, $type1, $type2, $cruft) = reverse @{$require};
-           $type2 = $type1 unless(defined($type2));
-           ($type1, $type2) = sort($type1, $type2);
-           if(!defined($type1) || ref($type1) ne '' || !defined($type2) || 
ref($type2) ne '') {
-               warn("$file isn't a valid Data::Compare plugin (invalid 
type)\n");
-           } elsif(defined($cruft)) {
-               warn("$file isn't a valid Data::Compare plugin (extra data)\n");
-           } elsif(ref($handler) ne 'CODE') {
-               warn("$file isn't a valid Data::Compare plugin (no coderef)\n");
-           } else {
-                $handler{$type1}{$type2} = $handler;
-           }
-        }
+    # register all the handlers
+    foreach my $require (@{$requires}) {
+      my($handler, $type1, $type2, $cruft) = reverse @{$require};
+      $type2 = $type1 unless(defined($type2));
+      ($type1, $type2) = sort($type1, $type2);
+      if(!defined($type1) || ref($type1) ne '' || !defined($type2) || 
ref($type2) ne '') {
+        warn("$file isn't a valid Data::Compare plugin (invalid type)\n");
+      } elsif(defined($cruft)) {
+        warn("$file isn't a valid Data::Compare plugin (extra data)\n");
+      } elsif(ref($handler) ne 'CODE') {
+        warn("$file isn't a valid Data::Compare plugin (no coderef)\n");
+      } else {
+        $handler{$type1}{$type2} = $handler;
+      }
     }
+  }
 }
 
 sub new {
@@ -100,145 +96,145 @@
 }
 
 sub Compare {
-    croak "Usage: Data::Compare::Compare(x, y, [opts])\n" unless $#_ == 1 || 
$#_ == 2;
-
-    my $x = shift;
-    my $y = shift;
-    my $opts = shift || {};
-    my($xparent, $xpos, $yparent, $ypos) = map {
-        $opts->{$_} || ''
-    } qw(xparent xpos yparent ypos);
+  croak "Usage: Data::Compare::Compare(x, y, [opts])\n" unless $#_ == 1 || $#_ 
== 2;
 
-    my $rval = '';
+  my $x = shift;
+  my $y = shift;
+  my $opts = shift || {};
+  my($xparent, $xpos, $yparent, $ypos) = map {
+    $opts->{$_} || ''
+  } qw(xparent xpos yparent ypos);
+
+  my $rval = '';
+
+  if(!exists($opts->{recursion_detector})) {
+    %been_there = ();
+    $opts->{recursion_detector} = 0;
+  }
+  $opts->{recursion_detector}++;
 
-    if(!exists($opts->{recursion_detector})) {
-        %been_there = ();
-        $opts->{recursion_detector} = 0;
-    }
-    $opts->{recursion_detector}++;
-
-    warn "Yaroo! deep recursion!\n" if($opts->{recursion_detector} == 99);
+  warn "Yaroo! deep recursion!\n" if($opts->{recursion_detector} == 99);
   
-    if(
-        (ref($x) && exists($been_there{"$x-$xpos-$xparent"}) && 
$been_there{"$x-$xpos-$xparent"} > 1) ||
-        (ref($y) && exists($been_there{"$y-$ypos-$yparent"}) && 
$been_there{"$y-$ypos-$yparent"} > 1)
-    ) {
-        $rval = 0; # is this the right thing to do?
-    } else {
-        $been_there{"$x-$xpos-$xparent"}++ if(ref($x));
-        $been_there{"$y-$ypos-$yparent"}++ if(ref($y));
-
-        $opts->{ignore_hash_keys} = { map {
-            ($_, 1)
-        } @{$opts->{ignore_hash_keys}} } if(ref($opts->{ignore_hash_keys}) eq 
'ARRAY');
-
-        my $refx = ref $x;
-        my $refy = ref $y;
-
-        if(exists($handler{$refx}) && exists($handler{$refx}{$refy})) {
-            $rval = &{$handler{$refx}{$refy}}($x, $y, $opts);
-        } elsif(exists($handler{$refy}) && exists($handler{$refy}{$refx})) {
-            $rval = &{$handler{$refy}{$refx}}($x, $y, $opts);
-        }
+  if(
+    (ref($x) && exists($been_there{"$x-$xpos-$xparent"}) && 
$been_there{"$x-$xpos-$xparent"} > 1) ||
+    (ref($y) && exists($been_there{"$y-$ypos-$yparent"}) && 
$been_there{"$y-$ypos-$yparent"} > 1)
+  ) {
+    return 1; # we bail as soon as possible, so if we've *not* bailed and have 
got here, say we're OK and go to the next sub-structure
+  } else {
+    $been_there{"$x-$xpos-$xparent"}++ if(ref($x));
+    $been_there{"$y-$ypos-$yparent"}++ if(ref($y));
+
+    $opts->{ignore_hash_keys} = { map {
+      ($_, 1)
+    } @{$opts->{ignore_hash_keys}} } if(ref($opts->{ignore_hash_keys}) eq 
'ARRAY');
+
+    my $refx = ref $x;
+    my $refy = ref $y;
+
+    if(exists($handler{$refx}) && exists($handler{$refx}{$refy})) {
+      $rval = &{$handler{$refx}{$refy}}($x, $y, $opts);
+    } elsif(exists($handler{$refy}) && exists($handler{$refy}{$refx})) {
+      $rval = &{$handler{$refy}{$refx}}($x, $y, $opts);
+    }
 
-        elsif(!$refx && !$refy) { # both are scalars
-            if(defined $x && defined $y) { # both are defined
-                $rval = $x eq $y;
-            } else { $rval = !(defined $x || defined $y); }
-        }
-        elsif ($refx ne $refy) { # not the same type
-            $rval = 0;
-        }
-        elsif ($x == $y) { # exactly the same reference
-            $rval = 1;
-        }
-        elsif ($refx eq 'SCALAR' || $refx eq 'REF') {
-            $rval = Compare(${$x}, ${$y}, $opts);
-        }
-        elsif ($refx eq 'ARRAY') {
-            if ($#{$x} == $#{$y}) { # same length
-                my $i = -1;
-                $rval = 1;
-                for (@$x) {
-                   $i++;
-                   $rval = 0 unless Compare($x->[$i], $y->[$i], { %{$opts}, 
xparent => $x, xpos => $i, yparent => $y, ypos => $i});
-                }
-            }
-            else {
-                $rval = 0;
-            }
-        }
-        elsif ($refx eq 'HASH') {
-            my @kx = grep { !$opts->{ignore_hash_keys}->{$_} } keys %$x;
-            my @ky = grep { !$opts->{ignore_hash_keys}->{$_} } keys %$y; # 
heh, KY
-            $rval = 1;
-            $rval = 0 unless scalar @kx == scalar @ky;
-
-            for (@kx) {
-                next unless defined $x->{$_} || defined $y->{$_};
-                $rval = 0 unless defined $y->{$_} && Compare($x->{$_}, 
$y->{$_}, { %{$opts}, xparent => $x, xpos => $_, yparent => $y, ypos => $_});
-            }
-        }
-        elsif($refx eq 'Regexp') {
-            $rval = Compare($x.'', $y.'', $opts);
-        }
-        elsif ($refx eq 'CODE') {
-            $rval = 0;
-        }
-        elsif ($refx eq 'GLOB') {
-            $rval = 0;
-        }
-        else { # a package name (object blessed)
-            my ($type) = "$x" =~ m/^$refx=(\S+)\(/;
-            if ($type eq 'HASH') {
-                my %x = %$x;
-                my %y = %$y;
-                $rval = Compare(\%x, \%y, { %{$opts}, xparent => $xparent, 
xpos => $xpos, yparent => $yparent, ypos => $ypos});
-                $been_there{\%x."-$xpos-$xparent"}--; # decrement count for 
temp structures
-                $been_there{\%y."-$ypos-$yparent"}--;
-            }
-            elsif ($type eq 'ARRAY') {
-                my @x = @$x;
-                my @y = @$y;
-                $rval = Compare(\@x, \@y, { %{$opts}, xparent => $xparent, 
xpos => $xpos, yparent => $yparent, ypos => $ypos});
-                $been_there{\@x."-$xpos-$xparent"}--;
-                $been_there{\@y."-$ypos-$yparent"}--;
-            }
-            elsif ($type eq 'SCALAR' || $type eq 'REF') {
-                my $x = ${$x};
-                my $y = ${$y};
-                $rval = Compare($x, $y, $opts);
-                # $been_there{\$x}--;
-                # $been_there{\$y}--;
-            }
-            elsif ($type eq 'GLOB') {
-                $rval = 0;
-            }
-            elsif ($type eq 'CODE') {
-                $rval = 0;
-            }
-            else {
-                croak "Can't handle $type type.";
-                $rval = 0;
-            }
-        }
+    elsif(!$refx && !$refy) { # both are scalars
+      if(defined $x && defined $y) { # both are defined
+        $rval = $x eq $y;
+      } else { $rval = !(defined $x || defined $y); }
+    }
+    elsif ($refx ne $refy) { # not the same type
+      $rval = 0;
+    }
+    elsif ($x == $y) { # exactly the same reference
+      $rval = 1;
+    }
+    elsif ($refx eq 'SCALAR' || $refx eq 'REF') {
+      $rval = Compare(${$x}, ${$y}, $opts);
+    }
+    elsif ($refx eq 'ARRAY') {
+      if ($#{$x} == $#{$y}) { # same length
+        my $i = -1;
+        $rval = 1;
+        for (@$x) {
+          $i++;
+          $rval = 0 unless Compare($x->[$i], $y->[$i], { %{$opts}, xparent => 
$x, xpos => $i, yparent => $y, ypos => $i});
+        }
+      }
+      else {
+        $rval = 0;
+      }
+    }
+    elsif ($refx eq 'HASH') {
+      my @kx = grep { !$opts->{ignore_hash_keys}->{$_} } keys %$x;
+      my @ky = grep { !$opts->{ignore_hash_keys}->{$_} } keys %$y; # heh, KY
+      $rval = 1;
+      $rval = 0 unless scalar @kx == scalar @ky;
+
+      for (@kx) {
+        next unless defined $x->{$_} || defined $y->{$_};
+        $rval = 0 unless defined $y->{$_} && Compare($x->{$_}, $y->{$_}, { 
%{$opts}, xparent => $x, xpos => $_, yparent => $y, ypos => $_});
+      }
+    }
+    elsif($refx eq 'Regexp') {
+      $rval = Compare($x.'', $y.'', $opts);
+    }
+    elsif ($refx eq 'CODE') {
+      $rval = 0;
     }
-    $opts->{recursion_detector}--;
-    return $rval;
+    elsif ($refx eq 'GLOB') {
+      $rval = 0;
+    }
+    else { # a package name (object blessed)
+      my ($type) = "$x" =~ m/^$refx=(\S+)\(/;
+      if ($type eq 'HASH') {
+        my %x = %$x;
+        my %y = %$y;
+        $rval = Compare(\%x, \%y, { %{$opts}, xparent => $xparent, xpos => 
$xpos, yparent => $yparent, ypos => $ypos});
+        $been_there{\%x."-$xpos-$xparent"}--; # decrement count for temp 
structures
+        $been_there{\%y."-$ypos-$yparent"}--;
+      }
+      elsif ($type eq 'ARRAY') {
+        my @x = @$x;
+        my @y = @$y;
+        $rval = Compare(\@x, \@y, { %{$opts}, xparent => $xparent, xpos => 
$xpos, yparent => $yparent, ypos => $ypos});
+        $been_there{\@x."-$xpos-$xparent"}--;
+        $been_there{\@y."-$ypos-$yparent"}--;
+      }
+      elsif ($type eq 'SCALAR' || $type eq 'REF') {
+        my $x = ${$x};
+        my $y = ${$y};
+        $rval = Compare($x, $y, $opts);
+        # $been_there{\$x}--;
+        # $been_there{\$y}--;
+      }
+      elsif ($type eq 'GLOB') {
+        $rval = 0;
+      }
+      elsif ($type eq 'CODE') {
+        $rval = 0;
+      }
+      else {
+        croak "Can't handle $type type.";
+        $rval = 0;
+      }
+    }
+  }
+  $opts->{recursion_detector}--;
+  return $rval;
 }
 
 sub plugins {
-    return { map { (($_ eq '') ? '[scalar]' : $_, [map { $_ eq '' ? '[scalar]' 
: $_ } keys %{$handler{$_}}]) } keys %handler };
+  return { map { (($_ eq '') ? '[scalar]' : $_, [map { $_ eq '' ? '[scalar]' : 
$_ } keys %{$handler{$_}}]) } keys %handler };
 }
 
 sub plugins_printable {
-    my $r = "The following comparisons are available through plugins\n\n";
-    foreach my $key (sort keys %handler) {
-        foreach(sort keys %{$handler{$key}}) {
-            $r .= join(":\t", map { $_ eq '' ? '[scalar]' : $_ } ($key, 
$_))."\n";
-       }
+  my $r = "The following comparisons are available through plugins\n\n";
+  foreach my $key (sort keys %handler) {
+    foreach(sort keys %{$handler{$key}}) {
+      $r .= join(":\t", map { $_ eq '' ? '[scalar]' : $_ } ($key, $_))."\n";
     }
-    return $r;
+  }
+  return $r;
 }
 
 1;
@@ -336,12 +332,6 @@
     $y = \$x;
     Compare([$x, $y], [$x, $y]);
 
-But comparing two different circular structures returns false:
-
-    $x = \$y;
-    $y = \$x;
-    Compare([$x, $y], [$y, $x]); # <-- note different order
-
 And on a sort-of-related note, if you try to compare insanely deeply nested
 structures, the module will spit a warning.  For this to affect you, you need 
to go
 around a hundred levels deep though, and if you do that you have bigger
@@ -389,9 +379,9 @@
 
 or you could call it as a function if that floats your boat.
 
-=head1 CVS
+=head1 CODE REPOSITORY
 
-L<http://drhyde.cvs.sourceforge.net/drhyde/perlmodules/Data-Compare/>
+L<http://www.cantrell.org.uk/cgit/cgit.cgi/perlmodules/>
 
 =head1 BUGS
 
@@ -404,6 +394,11 @@
 dropped priveleges.  This is due to how we check for Taintedness.  If this
 affects you, please supply a portable patch.
 
+Please report any other bugs either by email to David Cantrell (see below
+for address) or using rt.cpan.org:
+
+L<https://rt.cpan.org/Ticket/Create.html?Queue=Data-Compare>
+
 =head1 AUTHOR
 
 Fabien Tassin E<lt>[email protected]<gt>
@@ -416,12 +411,13 @@
 This program is free software; you can redistribute it and/or
 modify it under the same terms as Perl itself.
 
-Some parts copyright 2003 - 2008 David Cantrell.
+Some parts copyright 2003 - 2010 David Cantrell.
 
 Seeing that Fabien seems to have disappeared, David Cantrell has become
 a co-maintainer so he can apply needed patches.  The licence, of course,
-remains the same, and all communications about this module should be
-CCed to Fabien in case he ever returns and wants his baby back.
+remains the same.  As the "perl licence" is "Artistic or GPL, your choice",
+you can find them as the files ARTISTIC.txt and GPL2.txt in the
+distribution.
 
 =head1 SEE ALSO
 
diff -Nru libdata-compare-perl-1.21/t/compare.t 
libdata-compare-perl-1.22/t/compare.t
--- libdata-compare-perl-1.21/t/compare.t       2007-03-09 01:35:44.000000000 
+0100
+++ libdata-compare-perl-1.22/t/compare.t       2010-02-12 01:31:20.000000000 
+0100
@@ -8,7 +8,7 @@
 use Data::Compare;
 
 local $^W = 1;
-print "1..43\n";
+print "1..45\n";
 
 my $t = 1;
 
@@ -137,14 +137,22 @@
 $y=\$x; 
 $a->[0]=\$a->[1]; 
 $a->[1]=\$a->[0]; 
-&comp([$x, $y], $a, 0, "two parallel circular structures compare different");
+&comp([$x, $y], $a, 1, "two parallel circular structures compare the same");
 
 # these two are probably superfluous, as they test referential equality
 # rather than any of the stuff we added to do with circles and recursion
-&comp([$x, $y], [$y, $x], 0, "looking at a circle from two different starting 
points compares different");
+&comp([$x, $y], [$y, $x], 1, "looking at a circle from two different starting 
points compares the same");
 &comp([$x, $y], [$x, $y], 1, "a circular structure compares to itself");
 
+$a = [];
+$b = [];
+$a->[0] = { foo => { bar => $a } };
+$b->[0] = { foo => { bar => $b } };
+$a->[1] = $b->[1] = 5;
+comp($a, $b, 1, "structure of a circle plus same data compares the same");
 
+$a->[1] = 6;
+comp($a, $b, 0, "structure of a circle plus different data compares 
different");
 sub comp {
   my $a = shift;
   my $b = shift;
diff -Nru libdata-compare-perl-1.21/t/coverage.sh 
libdata-compare-perl-1.22/t/coverage.sh
--- libdata-compare-perl-1.21/t/coverage.sh     1970-01-01 01:00:00.000000000 
+0100
+++ libdata-compare-perl-1.22/t/coverage.sh     2009-05-15 22:43:21.000000000 
+0200
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+cover -delete
+HARNESS_PERL_SWITCHES=-MDevel::Cover=-coverage,statement,branch,condition,path,subroutine
 make test
+cover
diff -Nru libdata-compare-perl-1.21/t/deep-recursion.t 
libdata-compare-perl-1.22/t/deep-recursion.t
--- libdata-compare-perl-1.21/t/deep-recursion.t        2008-01-15 
23:41:09.000000000 +0100
+++ libdata-compare-perl-1.22/t/deep-recursion.t        2010-02-12 
01:29:02.000000000 +0100
@@ -18,9 +18,9 @@
     }
 }
 
-# check that we DTRT on infinite recursion
-my $a = 
[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[0]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]];
-my $b = 
[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[0]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]];
+# check that we DTRT on very deep recursion
+$a = 
[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[0]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]];
+$b = 
[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[0]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]];
 Compare($a, $b);
 ok($warning, "warn on deep recursion");
 $warning = '';
diff -Nru libdata-compare-perl-1.21/t/taint.t 
libdata-compare-perl-1.22/t/taint.t
--- libdata-compare-perl-1.21/t/taint.t 2008-08-26 22:44:46.000000000 +0200
+++ libdata-compare-perl-1.22/t/taint.t 2009-05-15 22:43:21.000000000 +0200
@@ -19,7 +19,8 @@
             $^X,
             '-Tw',
             (
-                map { "-I$_" }
+               # map { "-I$_" }
+                map { qq{-I"$_"} }
                 grep { -d $_ } # bleh, code-refs getting stringified
                 split(/$Config{path_sep}/, $perl5lib)
             ),



-- 
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]

Reply via email to