Mój kumpel potrzebuje pomocy.
Ostatnio zmodyfikowano 2010-05-30 02:21
Dragonit |
» 2010-05-30 00:30:44 Z tego co zauwazylem to to -m1.. -m5 oznacza poziomy kompresja wzgledem szybkosci. Widocznie -m1 jest juz max szybkoscia kompresji. Ciękco cokolwiek powiedziec jesli sie nie ma tej funkcji: fr_process_add_arg (a,b) w całosci. |
|
DejaVu |
» 2010-05-30 02:21:55 switch( comm->compression ) { case FR_COMPRESSION_VERY_FAST: fr_process_add_arg( comm->process, "-m1" ); break; case FR_COMPRESSION_FAST: fr_process_add_arg( comm->process, "-m2" ); break; case FR_COMPRESSION_NORMAL: fr_process_add_arg( comm->process, "-m3" ); break; case FR_COMPRESSION_MAXIMUM: fr_process_add_arg( comm->process, "-m5" ); break; }
Wiadomo, że długość przekazywanego łańcucha znaków się nie zmienia, więc prawdopodobnie wartość nie jest interpretowana prawidłowo. Być może fr_process_add_arg zwraca false, bądź NULL informując, że nie ma takiego stanu). Być może po zmianie na -m0 wartość comm->process jest = NULL, a późniejsze wywołanie fr_process_add_arg_printf( comm->process, "-v%ub", comm->volume_size ); wali naruszeniem ochrony pamięci i aplikacja się składa. Generalnie jeżeli aplikacja sypie się po zmianie wartości przekazywanej do argumentu funkcji oznacza to, że albo funkcja działa źle albo wartość wyjściowa funkcji została zmieniona na stan, który nie powinien nigdy zajść i kod nie został przewidziany na sytuację w której będzie trzeba obsłużyć takie zdarzenie, a więc aplikacja się wywala. |
|
1 « 2 » |