@@ -193,11 +193,32 @@ static InterpBase *pinterp;
193193
194194#define callmethod (o, m, f, ...) PyObject_CallMethod((o), (char *)(m), (char *)(f), ## __VA_ARGS__)
195195
196- static void maybe_new_line (int sequence_number=0 );
196+ static void maybe_new_line ();
197+ static void maybe_new_line (int sequence_number);
198+
199+ static void maybe_new_line () {
200+ if (!pinterp) return ;
201+ if (interp_error) return ;
202+ int sequence_number = pinterp->sequence_number ();
203+ if (sequence_number == last_sequence_number)
204+ return ;
205+ LineCode *new_line_code =
206+ (LineCode*)(PyObject_New (LineCode, &LineCodeType));
207+ pinterp->active_settings (new_line_code->settings );
208+ pinterp->active_g_codes (new_line_code->gcodes );
209+ pinterp->active_m_codes (new_line_code->mcodes );
210+ new_line_code->gcodes [0 ] = sequence_number;
211+ last_sequence_number = sequence_number;
212+ PyObject *result =
213+ callmethod (callback, " next_line" , " O" , new_line_code);
214+ Py_DECREF (new_line_code);
215+ if (result == NULL ) interp_error ++;
216+ Py_XDECREF (result);
217+ }
218+
197219static void maybe_new_line (int sequence_number) {
198220 if (!pinterp) return ;
199221 if (interp_error) return ;
200- sequence_number=pinterp->sequence_number ();
201222 if (sequence_number == last_sequence_number)
202223 return ;
203224 LineCode *new_line_code =
0 commit comments