Сбой приложения при доступе к элементу данных связанного списка, когда данные равны NULL - PullRequest
0 голосов
/ 23 мая 2019

Я использую следующий код для просмотра связанного списка в цели c

   const MSList *calls = linphone_core_get_calls(LC);
            if (calls == NULL)
            {
                                [self dismissCtrl];
                //how to check current is which screen is on
                //                while ((currentView == CallView.compositeViewDescription) ||
                //                       (currentView == CallIncomingView.compositeViewDescription) ||
                //                       (currentView == CallOutgoingView.compositeViewDescription)) {
                //                    [self popCurrentView];
                //                }

            } else {
                linphone_call_resume((LinphoneCall *)calls->data);
                while (calls)
                {

                    if(calls->data != NULL && calls->data != nil && calls->data != (__bridge void *)((id)[NSNull null]))
                    {
                        //crash
                    if (linphone_call_get_state((LinphoneCall *)calls->data) == LinphoneCallIncomingReceived ||
                        linphone_call_get_state((LinphoneCall *)calls->data) == LinphoneCallIncomingEarlyMedia) {
                        [self displayIncomingCall:(LinphoneCall *)calls->data];
                        break;
                    }
                   }
                    calls = calls->next;



                }

Приложение аварийно завершает работу, когда весь список не равен нулю, но его данные, предыдущее или следующее значение равно NULL. Я добавил код, чтобы проверить, что данные имеют значение NULL, но если они (данные) имеют значение NULL, то я не смогу получить к ним доступ, и в условиях само приложение не работает. Как это предотвратить? Я приложил снимок экрана, на котором происходит сбой приложения и какое значение содержит список в то время. enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...