probleme mit libBZ2, BZ2_bzBuffToBuffCompress()



  • hi leute!

    ich versuche momentan, mit hilfe von libBZ2 den inhalt eines buffers in einen anderen buffer zu komprimieren. leider gibt die funktion immer den fehlercode -8 zurück, welcher besagt dass im zielbuffer nicht genug freier speicher ist.

    aber ich kann den buffer beliebig vergrößern, dass problem bleibt bestehen....

    habe mal einen beispielcode gemacht, siehe unten.

    wäre super wenn mir da jemand helfen könnte.

    mfg,

    ---loki

    #include <bzlib.h>
    
    int main(void) {
    
        unsigned char *buffer1 = {0}; // work buffer
        unsigned char *bz2buffer = {0}; // buffer containing BZip2 data
    
        unsigned int BZ2length = 0;
        unsigned int compressOffset = 1024 * 1024;
    
        buffer1 = (unsigned char *)malloc(1024 * 1024);
        bz2buffer = (unsigned char *)malloc(1024 * 1024);
    
        int bz2Status = BZ2_bzBuffToBuffCompress(bz2buffer, &BZ2length, buffer1, compressOffset, 9, 0, 30);
        if(bz2Status != 0) {printf("warning, bz2Status is %d\n", bz2Status);}
    
        printf("BZ2length set to %d\n", BZ2length);
    
        return 0;
    }
    


  • ok, habe das problem gefunden: BZ2length muss vor dem funktionsaufruf auf die länge des zielbuffers gesetzt werden... dumm nur dass davon in der doku nichts steht 😞


Anmelden zum Antworten