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]

