[fpc] unit unzip - small error(solved?)

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
lichtwicht
Beiträge: 10
Registriert: Di 16. Sep 2008, 20:17
OS, Lazarus, FPC: WinXPSP2-32bit (06-2009: SVN: L 0.9.27 FPC 2.2.4)
CPU-Target: AMD 64Bit (single)

[fpc] unit unzip - small error(solved?)

Beitrag von lichtwicht »

Hallo!
da es mein erster post ist, ein paar Kleinigkeiten zu mir(siehe am Ende des Beitrags).

Nach (langer) Sucherei fand ich endlich o.g. unit unzip (NICHT die in PasZlib !)
( zipFileAndDirCount := FileUnzipEx(PChar(UTF8ToSys(SrcFilePath)), PChar(UTF8ToSys(DstPath)), '*.*'); )

leider stürzte die unit immer mit einem SIGSEGV ab, wenn ich ein Archiv mit langen Verzeichnis-Namen(>80 Zeichen) entpacken wollte!..

ich meine den Fehler gefunden zu haben(!)
und zwar eine ARRAY-Definiton in der UnzipFile()-Funktion:

Code: Alles auswählen

//this is it ! changed by lichtwicht!
//    buf : ARRAY [ 0..80 ] of char;
    buf : ARRAY [ 0..tFSize+1 ] of char;
("neue" unzip.pp im Anhang)

bei mir(win32) funktioniert jetzt alles wie es soll!
1. meint ihr, daß dies die Lösung ist? (theorethisch)
1.2. tFSize ist entweder 79 oder 259 (warumauchimmer...) ich habe mal +1 angehängt...(?)
2. funktioniert es auch auf anderen (B)Systemen?
(3.) wenn das tatsächlich die Lösung sein sollte, bitte ins nächste fpc/lazarus-release einbauen! Wie gesagt(im Header von unzip.pp) muß die Änderung wegen mir nicht extra genannt werden...(Hauptsache es funktioniert!)

greez lichtwicht

@1st post: kurz zu mir:
bin 38 Jahre alt(er Knacker); im Bereich Veranstaltungstechnik tätig; ab ca.16J mit Computern am rumbasteln; bekannte Sprachen: Basic, Pascal, 6502, 8086, (MS-DOS-Batch,) Java (,HTML1.X)...alles nicht wirklich tief(gut);
seit ca. einem halben Jahr/Jahr beschäftige ich mit lazarus/fpc und habe hier aus dem Forum schon viel gelernt! Danke dafür!
btw. ich hasse diesen ganzen UTF8-Mist!, aber ich sehe ein, daß es sein muß...

keep on rocking! (...that I rock, doesn't mean I am made of stone;)
Dateianhänge
unzip.7z
"neue" unzip.pp
(19.66 KiB) 58-mal heruntergeladen
A programmer is just a tool which converts coffein into code!

Activating back-to-desktop service...

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Re: [fpc] unit unzip - small error(solved?)

Beitrag von Euklid »

Hallo Lichtwicht!
lichtwicht hat geschrieben:ich meine den Fehler gefunden zu haben(!)
und zwar eine ARRAY-Definiton in der UnzipFile()-Funktion:
Das klingt ja hervorragend!
FreePascal und Lazarus sind internationale Projekte - und es gibt eine offizielle Anlaufstelle für Patches, die Bugs beheben. Schau mal hier:
http://bugs.freepascal.org/view_all_bug_page.php" onclick="window.open(this.href);return false;

Wenn du deinen beobachteten Bug samt Patch dort angibst, kannst du sicher sein, dass der Fehler in der nächsten Version von FreePascal/Lazarus behoben sein wird. Die FreePascal-Entwickler werden sich freuen, dass du ihnen die Arbeit des Fehlersuchens abgenommen hast...
bin 38 Jahre alt(er Knacker);
Zum Glück diskriminieren wir hier keine alten Menschen... ;)
im Bereich Veranstaltungstechnik tätig; ab ca.16J mit Computern am rumbasteln;
Ohach - damals hat man die Rechner doch bestimmt noch mit dem Lötkolben zum Laufen gebracht? ;)

Willkommen hier im Forum! Fühl dich wie zuhause...


Viele Grüße, Euklid

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: [fpc] unit unzip - small error(solved?)

Beitrag von Christian »

Hallo Lichtwicht,
wenn das tatsächlich die Lösung sein sollte, bitte ins nächste fpc/lazarus-release einbauen!
http://wiki.freepascal.org/Creating_A_Patch/de
tFSize ist entweder 79 oder 259 (warumauchimmer...) ich habe mal +1 angehängt...(?)
Das hat sicherlich was mit den DOS/Win krzen7Langen dateinamen zu tun. die 259 ist mit der längenbegrenzung für lange dateinamen im fat32 ganz gut zu erklären für die 80 hab ich aber keine idee da kurze dateinamen ja nur 11-12 byte belegen (je nach implementierung).
bin 38 Jahre alt(er Knacker); im Bereich Veranstaltungstechnik tätig
Schön, noch n Lichtmensch war ne ganze Weile in dem Bereich tätig wenn du mal lust auf n schwatz hast kannst mir ja mal ne PM schicken oder dich im Chat sen lassen.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

marcov
Beiträge: 1102
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: [fpc] unit unzip - small error(solved?)

Beitrag von marcov »

Christian hat geschrieben: Das hat sicherlich was mit den DOS/Win krzen7Langen dateinamen zu tun. die 259 ist mit der längenbegrenzung für lange dateinamen im fat32 ganz gut zu erklären für die 80 hab ich aber keine idee da kurze dateinamen ja nur 11-12 byte belegen (je nach implementierung).
Achtzig ist der Limit für path+name für Dos ohne LFN (fat), 260 für Dos/win mit LFN. (vfat)

lichtwicht
Beiträge: 10
Registriert: Di 16. Sep 2008, 20:17
OS, Lazarus, FPC: WinXPSP2-32bit (06-2009: SVN: L 0.9.27 FPC 2.2.4)
CPU-Target: AMD 64Bit (single)

Re: [fpc] unit unzip - small error(solved?)

Beitrag von lichtwicht »

ahhh, sorry!
die unit kann natürlich kein utf8...
(damit dürfte sich meine "tolle" Änderung erledigt haben...)
ich für meinen Teil habe es spontan nicht hinbekommen "utf8-support" einzubauen...
(was allgemein eine Schwachstelle meinerseits ist...)

ich muß wohl doch wieder nach etwas anderem Suchen um Archive zu entpacken(hmpf)...

EDIT@marcov: Cool! Thanx!
Zuletzt geändert von lichtwicht am Do 11. Dez 2008, 18:36, insgesamt 1-mal geändert.
A programmer is just a tool which converts coffein into code!

Activating back-to-desktop service...

marcov
Beiträge: 1102
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: [fpc] unit unzip - small error(solved?)

Beitrag von marcov »

Changed to 0..tfsize in r12306:

r12306 | marco | 2008-12-06 13:22:10 +0100 (Sat, 06 Dec 2008) | 4 lines

* a local buffer for pchar based filename handling was still at TP sizes
(80), and did not follow the libraries abstraction (array [tfsize]) for
length of paths. (Reporter Lichtwicht, lazarusforum.de)

Antworten