summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/readline/depend1
-rw-r--r--ext/readline/extconf.rb1
-rw-r--r--ext/readline/readline.c8
-rw-r--r--internal.h9
4 files changed, 10 insertions, 9 deletions
diff --git a/ext/readline/depend b/ext/readline/depend
index ef0414d9b2..5780d8d42a 100644
--- a/ext/readline/depend
+++ b/ext/readline/depend
@@ -1,4 +1,5 @@
readline.o: readline.c $(HDRS) $(ruby_headers) \
+ $(top_srcdir)/internal.h \
$(hdrdir)/ruby/io.h \
$(hdrdir)/ruby/encoding.h \
$(hdrdir)/ruby/oniguruma.h \
diff --git a/ext/readline/extconf.rb b/ext/readline/extconf.rb
index 3317e2fe83..c79370bf4c 100644
--- a/ext/readline/extconf.rb
+++ b/ext/readline/extconf.rb
@@ -105,4 +105,5 @@ unless readline.have_type("rl_hook_func_t*")
$defs << "-Drl_hook_func_t=Function"
end
+$INCFLAGS << " -I$(top_srcdir)"
create_makefile("readline")
diff --git a/ext/readline/readline.c b/ext/readline/readline.c
index da3b10939c..5ceaaf780b 100644
--- a/ext/readline/readline.c
+++ b/ext/readline/readline.c
@@ -36,6 +36,7 @@
#include "ruby/ruby.h"
#include "ruby/io.h"
#include "ruby/thread.h"
+#include "internal.h"
#ifdef HAVE_UNISTD_H
#include <unistd.h>
@@ -688,12 +689,7 @@ readline_s_delete_text(int argc, VALUE *argv, VALUE self)
char *p, *ptr = rl_line_buffer;
long beg = 0, len = strlen(rl_line_buffer);
struct RString fakestr;
- VALUE str = (VALUE)&fakestr;
-
- fakestr.basic.flags = T_STRING | RSTRING_NOEMBED;
- fakestr.as.heap.ptr = ptr;
- fakestr.as.heap.len = len;
- rb_enc_associate(str, rb_locale_encoding());
+ VALUE str = rb_setup_fake_str(&fakestr, ptr, len, rb_locale_encoding());
OBJ_FREEZE(str);
if (argc == 2) {
beg = NUM2LONG(argv[0]);
diff --git a/internal.h b/internal.h
index 1195549806..1a9be71c31 100644
--- a/internal.h
+++ b/internal.h
@@ -906,9 +906,6 @@ size_t rb_strftime(char *s, size_t maxsize, const char *format, rb_encoding *enc
void Init_frozen_strings(void);
VALUE rb_fstring(VALUE);
VALUE rb_fstring_new(const char *ptr, long len);
-#ifdef RUBY_ENCODING_H
-VALUE rb_setup_fake_str(struct RString *fake_str, const char *name, long len, rb_encoding *enc);
-#endif
int rb_str_buf_cat_escaped_char(VALUE result, unsigned int c, int unicode_p);
int rb_str_symname_p(VALUE);
VALUE rb_str_quote_unprintable(VALUE);
@@ -1062,6 +1059,12 @@ VALUE rb_gcd_normal(VALUE self, VALUE other);
VALUE rb_gcd_gmp(VALUE x, VALUE y);
#endif
+/* string.c */
+#ifdef RUBY_ENCODING_H
+/* internal use */
+VALUE rb_setup_fake_str(struct RString *fake_str, const char *name, long len, rb_encoding *enc);
+#endif
+
/* util.c */
extern const signed char ruby_digit36_to_number_table[];