@@ -165,6 +165,13 @@ extern {
165165
166166}
167167
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+
168175/// Returns Some(code) if `s` is a line that should be stripped from
169176/// documentation but used in example code. `code` is the portion of
170177/// `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 {
194201
195202 let opaque = opaque as * mut hoedown_html_renderer_state ;
196203 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 ( ) ;
199205 let origtext = str:: from_utf8 ( text) . unwrap ( ) ;
200206 debug ! ( "docblock: ==============\n {:?}\n =======" , text) ;
201207 let rendered = if lang. is_null ( ) {
202208 false
203209 } else {
204- let rlang = slice:: from_raw_buf ( & ( * lang) . data ,
205- ( * lang) . size as uint ) ;
210+ let rlang = ( * lang) . as_bytes ( ) ;
206211 let rlang = str:: from_utf8 ( rlang) . unwrap ( ) ;
207212 if !LangString :: parse ( rlang) . rust {
208213 ( my_opaque. dfltblk ) ( ob, orig_text, lang,
@@ -246,9 +251,7 @@ pub fn render(w: &mut fmt::Formatter, s: &str, print_toc: bool) -> fmt::Result {
246251 let s = if text. is_null ( ) {
247252 "" . to_string ( )
248253 } else {
249- let s = unsafe {
250- slice:: from_raw_buf ( & ( * text) . data , ( * text) . size as uint )
251- } ;
254+ let s = unsafe { ( * text) . as_bytes ( ) } ;
252255 str:: from_utf8 ( s) . unwrap ( ) . to_string ( )
253256 } ;
254257
@@ -321,7 +324,7 @@ pub fn render(w: &mut fmt::Formatter, s: &str, print_toc: bool) -> fmt::Result {
321324 } ;
322325
323326 if ret. is_ok ( ) {
324- let buf = slice :: from_raw_buf ( & ( * ob) . data , ( * ob ) . size as uint ) ;
327+ let buf = ( * ob) . as_bytes ( ) ;
325328 ret = w. write_str ( str:: from_utf8 ( buf) . unwrap ( ) ) ;
326329 }
327330 hoedown_buffer_free ( ob) ;
@@ -339,13 +342,12 @@ pub fn find_testable_code(doc: &str, tests: &mut ::test::Collector) {
339342 let block_info = if lang. is_null ( ) {
340343 LangString :: all_false ( )
341344 } else {
342- let lang = slice:: from_raw_buf ( & ( * lang) . data ,
343- ( * lang) . size as uint ) ;
345+ let lang = ( * lang) . as_bytes ( ) ;
344346 let s = str:: from_utf8 ( lang) . unwrap ( ) ;
345347 LangString :: parse ( s)
346348 } ;
347349 if !block_info. rust { return }
348- let text = slice :: from_raw_buf ( & ( * text) . data , ( * text ) . size as uint ) ;
350+ let text = ( * text) . as_bytes ( ) ;
349351 let opaque = opaque as * mut hoedown_html_renderer_state ;
350352 let tests = & mut * ( ( * opaque) . opaque as * mut :: test:: Collector ) ;
351353 let text = str:: from_utf8 ( text) . unwrap ( ) ;
@@ -368,7 +370,7 @@ pub fn find_testable_code(doc: &str, tests: &mut ::test::Collector) {
368370 if text. is_null ( ) {
369371 tests. register_header ( "" , level as u32 ) ;
370372 } else {
371- let text = slice :: from_raw_buf ( & ( * text) . data , ( * text ) . size as uint ) ;
373+ let text = ( * text) . as_bytes ( ) ;
372374 let text = str:: from_utf8 ( text) . unwrap ( ) ;
373375 tests. register_header ( text, level as u32 ) ;
374376 }
@@ -508,7 +510,7 @@ pub fn plain_summary_line(md: &str) -> String {
508510 hoedown_document_render ( document, ob, md. as_ptr ( ) ,
509511 md. len ( ) as libc:: size_t ) ;
510512 hoedown_document_free ( document) ;
511- let plain_slice = slice :: from_raw_buf ( & ( * ob) . data , ( * ob ) . size as uint ) ;
513+ let plain_slice = ( * ob) . as_bytes ( ) ;
512514 let plain = match str:: from_utf8 ( plain_slice) {
513515 Ok ( s) => s. to_string ( ) ,
514516 Err ( _) => "" . to_string ( ) ,
0 commit comments