To comment on the following update, log in, then open the issue:
http://www.openoffice.org/issues/show_bug.cgi?id=74914


User tml changed the following:

                What    |Old value                 |New value
================================================================================
                  Status|CLOSED                    |REOPENED
--------------------------------------------------------------------------------
              Resolution|FIXED                     |
--------------------------------------------------------------------------------




------- Additional comments from [EMAIL PROTECTED] Fri Jun  8 08:51:10 +0000 
2007 -------
I noticed a probem in my patch: In idtglobal.pm in the sub
get_next_free_number_with_hash(), the lookup from savedrev83mapping needs to use
the extension too in the key, as the whole 8.3 name is used when populating
savedrev83mapping.

If this is not fixed, the generated File table might have 8.3 names that overlap
ones from the previous File table if new files have been added (for instance
because of added languages).

(As such, clashing 8.3 names is not detected by Windows Installer. It gladly
accepts installers where multiple files in the same folder are given the same
8.3 name. If we could just ignore the very small chance that somebody actually
installs OO.o on a 8.3-only file system, we could scrap all the code generating
8.3 names and just store a fixed name like "A.B" as the 8.3 name for all non-8.3
names... If I understood correctly, that is what Red Hat's installer for Mugshot
on Windows, for instance, does. They don't bother to generate any real unique
8.3 names. But I digress.)

The fix is to add a third parameter to get_next_free_number_with_hash():

sub get_next_free_number_with_hash
{
        my ($name, $shortnamesref, $ext) = @_;

and a few lines below then use that too in lookups from savedrev83mapping:

        if ( exists($shortnamesref->{$newname}) ||
             exists($installer::globals::savedrev83mapping{$newname.$ext}) )
        {
                $alreadyexists = 1;
        }

Then we need to pass the extension (already uppercased and truncated) in the
calls to get_next_free_number_with_hash(), in five places in the sub
make_eight_three_conform_with_hash(). First, three instances of:

($number, $saved) = get_next_free_number_with_hash($name, $shortnamesref,
'.'.uc($extension));

then, in the remaining two calls just pass an empty string:

( $number, $saved ) = get_next_free_number_with_hash($name, $shortnamesref, '');

Hopefully this verbal free-form patch description is clear enough.



---------------------------------------------------------------------
Please do not reply to this automatically generated notification from
Issue Tracker. Please log onto the website and enter your comments.
http://qa.openoffice.org/issue_handling/project_issues.html#notification

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to