prevent raptor attacks on Ardour's lead developer.
authorRobin Gareus <robin@gareus.org>
Fri, 26 Oct 2012 03:11:10 +0000 (03:11 +0000)
committerRobin Gareus <robin@gareus.org>
Fri, 26 Oct 2012 03:11:10 +0000 (03:11 +0000)
https://xkcd.com/292/

git-svn-id: svn://localhost/ardour2/branches/3.0@13345 d708f5d6-7413-0410-9779-e7cbd77b26cf

libs/ardour/ardour/session.h
libs/ardour/session_ltc.cc

index e3376ae45fe2e76c50b3b93498c398b253a38f1c..33fadcd6bd927793faed8cf785249c1af03ec9a5 100644 (file)
@@ -1203,7 +1203,7 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi
        void ltc_tx_cleanup();
        void ltc_tx_reset();
        void ltc_tx_recalculate_position();
-       int  ltc_tx_send_time_code_for_cycle (framepos_t, framepos_t, double, double, pframes_t nframes);
+       void ltc_tx_send_time_code_for_cycle (framepos_t, framepos_t, double, double, pframes_t nframes);
 #endif
 
        void reset_record_status ();
index 6e3762592a1185423df6db65b88051b0f826f7f1..0cff7ef2b2ca2ad7353c61f831ca0bd4f81aa0cf 100644 (file)
@@ -101,7 +101,7 @@ Session::ltc_tx_recalculate_position()
                );
 }
 
-int
+void
 Session::ltc_tx_send_time_code_for_cycle (framepos_t start_frame, framepos_t end_frame,
                                          double target_speed, double current_speed,
                                          pframes_t nframes)
@@ -111,13 +111,11 @@ Session::ltc_tx_send_time_code_for_cycle (framepos_t start_frame, framepos_t end
        Sample *out;
        pframes_t txf = 0;
        boost::shared_ptr<Port> ltcport = ltc_output_port();
-       int ret = -1;
 
        Buffer& buf (ltcport->get_buffer (nframes));
        
        if (!ltc_encoder || !ltc_enc_buf) {
-               ret = nframes;
-               goto out;
+               return;
        }
 
        SyncSource sync_src = Config->get_sync_source();
@@ -132,8 +130,7 @@ Session::ltc_tx_send_time_code_for_cycle (framepos_t start_frame, framepos_t end
            */
            (config.get_external_sync() && sync_src == MIDIClock)
                ) {
-               ret = nframes;
-               goto out;
+               return;
        }
 
        out = dynamic_cast<AudioBuffer*>(&buf)->data ();
@@ -166,8 +163,7 @@ Session::ltc_tx_send_time_code_for_cycle (framepos_t start_frame, framepos_t end
                if (ltc_encoder_reinit(ltc_encoder, nominal_frame_rate(), timecode_to_frames_per_second(cur_timecode), 0)) {
                        PBD::error << _("LTC encoder: invalid framerate - LTC encoding is disabled for the remainder of this session.") << endmsg;
                        ltc_tx_cleanup();
-                       ret = 0;
-                       goto out;
+                       return;
                }
                ltc_enc_tcformat = cur_timecode;
                ltc_tx_reset();
@@ -175,8 +171,7 @@ Session::ltc_tx_send_time_code_for_cycle (framepos_t start_frame, framepos_t end
 
        /* LTC is max. 30 fps */
        if (timecode_to_frames_per_second(cur_timecode) > 30) {
-               ret = nframes;
-               goto out;
+               return;
        }
 
        // (2) speed & direction
@@ -233,16 +228,14 @@ Session::ltc_tx_send_time_code_for_cycle (framepos_t start_frame, framepos_t end
                new_ltc_speed = 0;
                if (!Config->get_ltc_send_continuously()) {
                        ltc_speed = new_ltc_speed;
-                       ret = nframes;
-                       goto out;
+                       return;
                }
        }
 
        if (fabs(new_ltc_speed) > 10.0) {
                DEBUG_TRACE (DEBUG::LTC, "LTC TX2: speed is out of bounds.\n");
                ltc_tx_reset();
-               ret = nframes;
-               goto out;
+               return;
        }
 
        if (ltc_speed == 0 && new_ltc_speed != 0) {
@@ -430,9 +423,8 @@ Session::ltc_tx_send_time_code_for_cycle (framepos_t start_frame, framepos_t end
                        memset(out, 0, cyc_off * sizeof(Sample));
                } else {
                        /* resync next cycle */
-                       memset(out, 0, cyc_off * sizeof(Sample));
-                       ret = frames;
-                       goto done;
+                       memset(out, 0, nframes * sizeof(Sample));
+                       return;
                }
 
                ltc_enc_pos = tc_sample_start;
@@ -460,8 +452,7 @@ Session::ltc_tx_send_time_code_for_cycle (framepos_t start_frame, framepos_t end
                if (txf >= nframes) {
                        DEBUG_TRACE (DEBUG::LTC, string_compose("LTC TX7 enc: %1 [ %2 / %3 ] byte: %4 spd %5 fpp %6 || nf: %7\n",
                                                ltc_enc_pos, ltc_buf_off, ltc_buf_len, ltc_enc_byte, ltc_speed, nframes, txf));
-                       ret = nframes;
-                       goto done;
+                       break;
                }
 
                ltc_buf_len = 0;
@@ -482,7 +473,7 @@ Session::ltc_tx_send_time_code_for_cycle (framepos_t start_frame, framepos_t end
                        DEBUG_TRACE (DEBUG::LTC, string_compose("LTC TX6.3 encoder error byte %1\n", ltc_enc_byte));
                        ltc_encoder_buffer_flush(ltc_encoder);
                        ltc_tx_reset();
-                       goto out;
+                       return;
                }
                int enc_frames = ltc_encoder_get_buffer(ltc_encoder, &(ltc_enc_buf[ltc_buf_len]));
 #ifdef LTC_GEN_FRAMEDBUG
@@ -492,7 +483,7 @@ Session::ltc_tx_send_time_code_for_cycle (framepos_t start_frame, framepos_t end
                        DEBUG_TRACE (DEBUG::LTC, "LTC TX6.3 encoder empty buffer.\n");
                        ltc_encoder_buffer_flush(ltc_encoder);
                        ltc_tx_reset();
-                       goto out;;
+                       return;
                }
 
                ltc_buf_len += enc_frames;
@@ -516,10 +507,6 @@ Session::ltc_tx_send_time_code_for_cycle (framepos_t start_frame, framepos_t end
 #endif
        }
        
-  done:
        dynamic_cast<AudioBuffer*>(&buf)->set_written (true);
-       ret = nframes;
-
-  out:
-       return ret;
+       return;
 }