struct vidtv_psi_desc *table_descriptor   = args.pmt->descriptor;
        struct vidtv_psi_table_pmt_stream *stream = args.pmt->stream;
-       struct vidtv_psi_desc *stream_descriptor  = (stream) ?
-                                                   args.pmt->stream->descriptor :
-                                                   NULL;
+       struct vidtv_psi_desc *stream_descriptor;
 
        struct header_write_args h_args = {};
        struct psi_write_args psi_args  = {};
 
                nbytes += vidtv_psi_ts_psi_write_into(psi_args);
 
+               stream_descriptor = stream->descriptor;
+
                while (stream_descriptor) {
                        /* write the stream descriptors, if any */
                        d_args.dest_buf           = args.buf;
        u32 crc = INITIAL_CRC;
 
        struct vidtv_psi_table_sdt_service *service = args.sdt->service;
-       struct vidtv_psi_desc *service_desc = (args.sdt->service) ?
-                                             args.sdt->service->descriptor :
-                                             NULL;
+       struct vidtv_psi_desc *service_desc;
 
        struct header_write_args h_args = {};
        struct psi_write_args psi_args  = {};
 
                nbytes += vidtv_psi_ts_psi_write_into(psi_args);
 
+               service_desc = service->descriptor;
+
                while (service_desc) {
                        /* copy the service descriptors, if any */
                        d_args.dest_buf           = args.buf;
 
        struct vidtv_psi_desc *table_descriptor     = args.nit->descriptor;
        struct vidtv_psi_table_transport *transport = args.nit->transport;
-       struct vidtv_psi_desc *transport_descriptor = (transport) ?
-                                                      args.nit->transport->descriptor :
-                                                      NULL;
+       struct vidtv_psi_desc *transport_descriptor;
 
        struct header_write_args h_args = {};
        struct psi_write_args psi_args  = {};
 
                nbytes += vidtv_psi_ts_psi_write_into(psi_args);
 
+               transport_descriptor = transport->descriptor;
+
                while (transport_descriptor) {
                        /* write the transport descriptors, if any */
                        d_args.dest_buf           = args.buf;
        u32 crc = INITIAL_CRC;
 
        struct vidtv_psi_table_eit_event *event = args.eit->event;
-       struct vidtv_psi_desc *event_descriptor = (args.eit->event) ?
-                                                  args.eit->event->descriptor :
-                                                  NULL;
+       struct vidtv_psi_desc *event_descriptor;
 
        struct header_write_args h_args = {};
        struct psi_write_args psi_args  = {};