Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • perlglue.xs

    r8c59178 r9186c75  
    172172        SV *callback
    173173        PREINIT:
     174                owl_editwin *e;
    174175        CODE:
    175176        {
     
    177178                        croak("Callback must be a subref");
    178179
    179                 owl_function_start_question(line);
    180 
    181                 owl_editwin_set_cbdata(owl_global_get_typwin(&g), newSVsv(callback));
    182                 owl_editwin_set_callback(owl_global_get_typwin(&g), owl_perlconfig_edit_callback);
     180                e = owl_function_start_question(line);
     181
     182                owl_editwin_set_cbdata(e,
     183                                       newSVsv(callback),
     184                                       owl_perlconfig_dec_refcnt);
     185                owl_editwin_set_callback(e, owl_perlconfig_edit_callback);
    183186        }
    184187
     
    188191        SV *callback
    189192        PREINIT:
     193                owl_editwin *e;
    190194        CODE:
    191195        {
     
    193197                        croak("Callback must be a subref");
    194198
    195                 owl_function_start_password(line);
    196 
    197                 owl_editwin_set_cbdata(owl_global_get_typwin(&g), newSVsv(callback));
    198                 owl_editwin_set_callback(owl_global_get_typwin(&g), owl_perlconfig_edit_callback);
     199                e = owl_function_start_password(line);
     200
     201                owl_editwin_set_cbdata(e,
     202                                       newSVsv(callback),
     203                                       owl_perlconfig_dec_refcnt);
     204                owl_editwin_set_callback(e, owl_perlconfig_edit_callback);
    199205        }
    200206
     
    208214                        croak("Callback must be a subref");
    209215
    210                 owl_function_start_edit_win(line, owl_perlconfig_edit_callback, newSVsv(callback));
     216                owl_function_start_edit_win(line,
     217                                            owl_perlconfig_edit_callback,
     218                                            newSVsv(callback),
     219                                            owl_perlconfig_dec_refcnt);
    211220        }
    212221
     
    542551        int count;
    543552        const char *string;
    544         CODE:
    545                 RETVAL = owl_editwin_replace(owl_global_get_typwin(&g), count, string);
     553        PREINIT:
     554                owl_editwin *e;
     555        CODE:
     556                e = owl_global_get_typwin(&g);
     557                if (e) {
     558                        RETVAL = owl_editwin_replace(e, count, string);
     559                } else {
     560                        RETVAL = 0;
     561                }
    546562        OUTPUT:
    547563                RETVAL
     
    550566point_move(delta)
    551567        int delta;
    552         CODE:
    553                 RETVAL = owl_editwin_point_move(owl_global_get_typwin(&g), delta);
     568        PREINIT:
     569                owl_editwin *e;
     570        CODE:
     571                e = owl_global_get_typwin(&g);
     572                if (e) {
     573                        RETVAL = owl_editwin_point_move(e, delta);
     574                } else {
     575                        RETVAL = 0;
     576                }
    554577        OUTPUT:
    555578                RETVAL
     
    558581replace_region(string)
    559582        const char *string;
    560         CODE:
    561                 RETVAL = owl_editwin_replace_region(owl_global_get_typwin(&g), string);
     583        PREINIT:
     584                owl_editwin *e;
     585        CODE:
     586                e = owl_global_get_typwin(&g);
     587                if (e) {
     588                        RETVAL = owl_editwin_replace_region(e, string);
     589                } else {
     590                        RETVAL = 0;
     591                }
    562592        OUTPUT:
    563593                RETVAL
     
    567597        PREINIT:
    568598                char *region;
    569         CODE:
    570                 region = owl_editwin_get_region(owl_global_get_typwin(&g));
     599                owl_editwin *e;
     600        CODE:
     601                e = owl_global_get_typwin(&g);
     602                if (e) {
     603                        region = owl_editwin_get_region(owl_global_get_typwin(&g));
     604                } else {
     605                        region = NULL;
     606                }
    571607                RETVAL = region;
    572608        OUTPUT:
     
    581617        PREINIT:
    582618                int count;
     619                owl_editwin *e;
    583620                owl_editwin_excursion *x;
    584621        CODE:
    585622        {
     623                e = owl_global_get_typwin(&g);
     624                if(!e)
     625                        croak("The edit window is not currently active!");
     626
    586627                x = owl_editwin_begin_excursion(owl_global_get_typwin(&g));
    587628                PUSHMARK(SP);
     
    605646int
    606647current_column()
    607         CODE:
    608                 RETVAL = owl_editwin_current_column(owl_global_get_typwin(&g));
     648        PREINIT:
     649                owl_editwin *e;
     650        CODE:
     651                e = owl_global_get_typwin(&g);
     652                if (e) {
     653                        RETVAL = owl_editwin_current_column(e);
     654                } else {
     655                        RETVAL = 0;
     656                }
    609657        OUTPUT:
    610658                RETVAL
     
    612660int
    613661point()
    614         CODE:
    615                 RETVAL = owl_editwin_get_point(owl_global_get_typwin(&g));
     662        PREINIT:
     663                owl_editwin *e;
     664        CODE:
     665                e = owl_global_get_typwin(&g);
     666                if (e) {
     667                        RETVAL = owl_editwin_get_point(e);
     668                } else {
     669                        RETVAL = 0;
     670                }
    616671        OUTPUT:
    617672                RETVAL
     
    619674int
    620675mark()
    621         CODE:
    622                 RETVAL = owl_editwin_get_mark(owl_global_get_typwin(&g));
    623         OUTPUT:
    624                 RETVAL
     676        PREINIT:
     677                owl_editwin *e;
     678        CODE:
     679                e = owl_global_get_typwin(&g);
     680                if (e) {
     681                        RETVAL = owl_editwin_get_mark(e);
     682                } else {
     683                        RETVAL = 0;
     684                }
     685        OUTPUT:
     686                RETVAL
Note: See TracChangeset for help on using the changeset viewer.