@@ -165,6 +165,13 @@ extern {
165
165
166
166
}
167
167
168
+ // hoedown_buffer helpers
169
+ impl hoedown_buffer {
170
+ fn as_bytes ( & self ) -> & [ u8 ] {
171
+ unsafe { slice:: from_raw_parts ( self . data , self . size as usize ) }
172
+ }
173
+ }
174
+
168
175
/// Returns Some(code) if `s` is a line that should be stripped from
169
176
/// documentation but used in example code. `code` is the portion of
170
177
/// `s` that should be used in tests. (None for lines that should be
@@ -194,15 +201,13 @@ pub fn render(w: &mut fmt::Formatter, s: &str, print_toc: bool) -> fmt::Result {
194
201
195
202
let opaque = opaque as * mut hoedown_html_renderer_state ;
196
203
let my_opaque: & MyOpaque = & * ( ( * opaque) . opaque as * const MyOpaque ) ;
197
- let text = slice:: from_raw_buf ( & ( * orig_text) . data ,
198
- ( * orig_text) . size as uint ) ;
204
+ let text = ( * orig_text) . as_bytes ( ) ;
199
205
let origtext = str:: from_utf8 ( text) . unwrap ( ) ;
200
206
debug ! ( "docblock: ==============\n {:?}\n =======" , text) ;
201
207
let rendered = if lang. is_null ( ) {
202
208
false
203
209
} else {
204
- let rlang = slice:: from_raw_buf ( & ( * lang) . data ,
205
- ( * lang) . size as uint ) ;
210
+ let rlang = ( * lang) . as_bytes ( ) ;
206
211
let rlang = str:: from_utf8 ( rlang) . unwrap ( ) ;
207
212
if !LangString :: parse ( rlang) . rust {
208
213
( my_opaque. dfltblk ) ( ob, orig_text, lang,
@@ -248,9 +253,7 @@ pub fn render(w: &mut fmt::Formatter, s: &str, print_toc: bool) -> fmt::Result {
248
253
let s = if text. is_null ( ) {
249
254
"" . to_string ( )
250
255
} else {
251
- let s = unsafe {
252
- slice:: from_raw_buf ( & ( * text) . data , ( * text) . size as uint )
253
- } ;
256
+ let s = unsafe { ( * text) . as_bytes ( ) } ;
254
257
str:: from_utf8 ( s) . unwrap ( ) . to_string ( )
255
258
} ;
256
259
@@ -323,7 +326,7 @@ pub fn render(w: &mut fmt::Formatter, s: &str, print_toc: bool) -> fmt::Result {
323
326
} ;
324
327
325
328
if ret. is_ok ( ) {
326
- let buf = slice :: from_raw_buf ( & ( * ob) . data , ( * ob ) . size as uint ) ;
329
+ let buf = ( * ob) . as_bytes ( ) ;
327
330
ret = w. write_str ( str:: from_utf8 ( buf) . unwrap ( ) ) ;
328
331
}
329
332
hoedown_buffer_free ( ob) ;
@@ -341,13 +344,12 @@ pub fn find_testable_code(doc: &str, tests: &mut ::test::Collector) {
341
344
let block_info = if lang. is_null ( ) {
342
345
LangString :: all_false ( )
343
346
} else {
344
- let lang = slice:: from_raw_buf ( & ( * lang) . data ,
345
- ( * lang) . size as uint ) ;
347
+ let lang = ( * lang) . as_bytes ( ) ;
346
348
let s = str:: from_utf8 ( lang) . unwrap ( ) ;
347
349
LangString :: parse ( s)
348
350
} ;
349
351
if !block_info. rust { return }
350
- let text = slice :: from_raw_buf ( & ( * text) . data , ( * text ) . size as uint ) ;
352
+ let text = ( * text) . as_bytes ( ) ;
351
353
let opaque = opaque as * mut hoedown_html_renderer_state ;
352
354
let tests = & mut * ( ( * opaque) . opaque as * mut :: test:: Collector ) ;
353
355
let text = str:: from_utf8 ( text) . unwrap ( ) ;
@@ -370,7 +372,7 @@ pub fn find_testable_code(doc: &str, tests: &mut ::test::Collector) {
370
372
if text. is_null ( ) {
371
373
tests. register_header ( "" , level as u32 ) ;
372
374
} else {
373
- let text = slice :: from_raw_buf ( & ( * text) . data , ( * text ) . size as uint ) ;
375
+ let text = ( * text) . as_bytes ( ) ;
374
376
let text = str:: from_utf8 ( text) . unwrap ( ) ;
375
377
tests. register_header ( text, level as u32 ) ;
376
378
}
@@ -510,7 +512,7 @@ pub fn plain_summary_line(md: &str) -> String {
510
512
hoedown_document_render ( document, ob, md. as_ptr ( ) ,
511
513
md. len ( ) as libc:: size_t ) ;
512
514
hoedown_document_free ( document) ;
513
- let plain_slice = slice :: from_raw_buf ( & ( * ob) . data , ( * ob ) . size as uint ) ;
515
+ let plain_slice = ( * ob) . as_bytes ( ) ;
514
516
let plain = match str:: from_utf8 ( plain_slice) {
515
517
Ok ( s) => s. to_string ( ) ,
516
518
Err ( _) => "" . to_string ( ) ,
0 commit comments