<div class="gmail_quote">On Wed, Nov 21, 2012 at 11:54 AM, Shani Hadiyanto Pribadi <span dir="ltr"><<a href="mailto:shanipribadi@gmx.net" target="_blank">shanipribadi@gmx.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
jack_midi_event_get(&in_event, midi_buf, event_index);<br>if ((*(in_event.buffer) & 0xf0) == 0x90) // Segfault happens here, on boolean mask operation<br>{<br>    _note = *(in_event.buffer + 1);<br>}<br></blockquote>
<div><br>Extra context from you git repo:<br><span class="p"></span><div class="line" id="LC116">    <span class="kt">void</span> <span class="o">*</span><span class="n">midi_buf</span><span class="p">;</span></div><div class="line" id="LC117">
    <span class="n">jack_midi_event_t</span> <span class="n">in_event</span><span class="p">;</span></div><div class="line" id="LC118">    <span class="n">jack_nframes_t</span> <span class="n">event_index</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></div>
<div class="line" id="LC119">    <span class="n">jack_nframes_t</span> <span class="n">event_count</span><span class="p">;</span></div><div class="line" id="LC120"><br></div><div class="line" id="LC121">    <span class="n">midi_buf</span> <span class="o">=</span> <span class="n">jack_port_get_buffer</span><span class="p">(</span><span class="n">_ports</span><span class="p">[</span><span class="n">MIDI</span><span class="p">],</span> <span class="n">nframes</span><span class="p">);</span></div>
<div class="line" id="LC122">    <span class="n">event_count</span> <span class="o">=</span> <span class="n">jack_midi_get_event_count</span><span class="p">(</span><span class="n">midi_buf</span><span class="p">);</span></div>
<div style class="line" id="LC123"><br></div><div style="background-color:rgb(255,255,204)" class="line" id="LC124">    <span class="n">jack_midi_event_get</span><span class="p">(</span><span class="o">&</span><span class="n">in_event</span><span class="p">,</span> <span class="n">midi_buf</span><span class="p">,</span> <span class="n">event_index</span><span class="p">); // error here?<br>
</span></div><div class="line" id="LC125">    <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o"><<</span> <span class="n">std</span><span class="o">::</span><span class="n">hex</span> <span class="o"><<</span> <span class="k">static_cast</span><span class="o"><</span><span class="kt">unsigned</span> <span class="kt">int</span><span class="o">></span> <span class="p">(</span><span class="o">*</span><span class="p">(</span><span class="n">in_event</span><span class="p">.</span><span class="n">buffer</span><span class="p">))</span> <span class="o"><<</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span></div>
<div class="line" id="LC126">    <span class="k">if</span> <span class="p">(</span><span class="n">event_count</span><span class="p">)</span></div><div class="line" id="LC127">    <span class="p">{<br></span>    <span class="p">}<br>
<br></span>What happens when event_index has a value of 0? It will attempt a read & dereference anyway.<br>Perhaps put the jack_midi_event_get() call into the if  statement.<br><br>Also, you should probably use this instead of if(event_count)<br>
<br>int event_num = 0;<br>while ( event_num < event_count )<br>{<br>   // do stuff<br>   event_num++;<br>}<br><br>Haven't tried the above code, but I think that might be it :)<br>HTH, -Harry<br></div> </div></div>