home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 9 Archive
/
09-Archive.zip
/
UnzpHist.zip
/
History.314
< prev
next >
Wrap
Text File
|
1990-08-30
|
2KB
|
38 lines
*********************************
v3.14 BETA, 30 Aug 90 (or thereabouts)
Date: Wed, 29 Aug 90 18:27:21 EDT
From: Larry Jones <sdrc!scjones%thor@uunet.UU.NET>
To: uunet!wsmr-simtel20.army.mil!info-zip@uunet.UU.NET
Subject: Patches to eliminate zmemcpy and zmemset
Well, I finally got around to fixing the problem that required
zmemcpy on most systems. The problem is that memcpy is (or at
least should be) a highly optimized routine for moving chunks
of memory around at very high speeds. In order to do this, it
makes no guarantees about what happens if the source and
destination overlap. Unfortunately, the unimplod logic calls
it with the source and destination overlapping most of the
time, expecting it to move one byte at a time from left to
right. If your system's memcmp is optimized at all, there is
very little chance of this happening.
So, what I did was to put the byte-at-a-time copy code in-line
in unimplod.c rather than call zmemcmp. Then, since all of
of the other calls to zmemcmp and zmemset should be OK, I
changed them back to just memcmp and memset. Then I
removed the ZMEM defines from unzip.h, removed all of the
-DZMEM and related stuff from the makefile, and changed the
names of the functions in zmemcpy.c and zmemset.c to just
memcpy and memset so if anyone is completely missing these
functions they'll be able to use ours. I also tweaked the
code a little to be more in line with the standard definitions
of these functions. Also, I did some cleanup in the make file
to collapse the systems which were only different in whether
they need ZMEM or not and to avoid the recursive make for the
simplest cases.
The diffs (to 3.11) follow:
[extracted and posted]