summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSilvan Jegen <s.jegen@gmail.com>2015-10-04 16:20:25 +0200
committerSilvan Jegen <s.jegen@gmail.com>2015-10-04 16:20:25 +0200
commit6034949850ade2dbd49836f77a9765ccf8354355 (patch)
tree3fdc1412a64b55ef669a3e45fb268d5c99213241
parent5b96f28f61449b60fe03dce68b052a7a3f9dc588 (diff)
Make the tag reader work
-rw-r--r--unxml.go22
1 files changed, 10 insertions, 12 deletions
diff --git a/unxml.go b/unxml.go
index aa6bc8a..ff04b2d 100644
--- a/unxml.go
+++ b/unxml.go
@@ -85,10 +85,13 @@ func (r *Reader) Read(out []byte) (int, error) {
lenlr := len(r.lastread)
if lenlr > 0 {
- n = copy(out[0:], r.lastread)
+ n = copy(out, r.lastread)
r.count += n
- r.lastread = make([]byte, len(out))
- lenout -= n
+ if n < lenlr {
+ r.lastread = r.lastread[n:]
+ return r.count, nil
+ }
+ r.lastread = make([]byte, lenout)
}
for {
@@ -100,15 +103,10 @@ func (r *Reader) Read(out []byte) (int, error) {
case html.TextToken:
text := r.tokenizer.Text()
- lentext := len(text)
- if lentext <= lenout {
- n = copy(out[r.count:], text)
- r.count += n
- lenout -= n
- } else {
- n = copy(out[r.count:], text[:lenout-1])
- r.count += n
- r.lastread = text[lenout-1:]
+ n = copy(out[r.count:], text)
+ r.count += n
+ if n < len(text) {
+ r.lastread = text[n:]
return r.count, err
}