Anzeige:
Ergebnis 1 bis 4 von 4

Thema: zLib - Ich geh kaputt an Segfaults!!!

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Registrierter Benutzer Avatar von mrsuicide
    Registriert seit
    11.04.2003
    Beiträge
    38

    Angry zLib - Ich geh kaputt an Segfaults!!!

    Hier mein Code:

    zlib_stuff.cpp
    Code:
    #ifndef ZL_C
    #define ZL_C
     
    #include <zlib.h>
    #include <string.h>
    #include <stdlib.h>
    #include "zlib_stuff.h"
    
    void CompressData(compress_data *input)
    {
    if((input->size==0)||(input->data==NULL))return;
    Byte *uncompressed, *compressed;
    unsigned long cLen;
    int retval;
    input->compressed=false;
    uncompressed = (Byte *) strdup(input->data);
    if((compressed = (Byte *) malloc(input->size+1024)) == NULL)return;
    retval = compress2(compressed, &cLen, uncompressed, sizeof(uncompressed)+1 ,9);
    if((retval==Z_MEM_ERROR)||(retval==Z_BUF_ERROR))return;
    if(input->data!=NULL)free(input->data);
    input->data=strdup((char *)compressed);
    input->size=cLen;
    input->compressed=true;
    return;
    }
    
    void DecompressData(compress_data *input)
    {
    Byte *extracted=NULL;
    unsigned long eLen=input->size;
    int retval = 4;
    Byte *compressed;
    input->compressed=true;
    compressed = (Byte *) strdup(input->data);
    while((eLen < 100000) && (retval != Z_OK)){
    if(extracted != NULL)free(extracted);
    if((extracted = (Byte *) malloc(eLen)) == NULL)return;
    retval = uncompress(extracted, &eLen, compressed, input->size);
    if((retval==Z_MEM_ERROR)||(retval==Z_BUF_ERROR))break;
    if(retval != Z_OK)eLen *= 2;
    }
    free(input->data);
    input->data = (char *) strdup((char *)extracted);
    input->size=eLen;
    input->compressed=false;
    return;
    }
    
    #endif
    zlib_stuff.h
    Code:
    #ifndef ZL_H
    #define ZL_H
     
    struct compress_data
    {
    char *data;
    unsigned long size;
    bool compressed;
    };
    
    void CompressData(compress_data *input);
    void DecompressData(compress_data *input);
    #endif
    Aufruf:
    Code:
    struct compress_data compr;
    compr.compressed=true;
    compr.data=(char *)strdup("Zlib teeeest!\nBla bla bla...\d\nHallo: Zliiib\n");
    compr.size=strlen(compr.data);
    CompressData(&compr);
    printf("Compressed: %s\n",compr.data);
    Mein gesamter Code in der Anwendung funzt problemlos...es crasht immer nur bei Aufruf von compress() oder compress2()...
    Geändert von mrsuicide (06-01-2004 um 12:01 Uhr)
    GreeZ,
    Mr. Suicide!

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •