commit 69c5c0499a7b8792b056732b7fe7e07d6070def1
parent 5561965291932f3574410b348001fc1685390374
Author: markseu <mark2011@mayberg.se>
Date: Mon, 27 Oct 2014 15:25:57 +0100
Better image detection
Diffstat:
2 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
@@ -1,4 +1,4 @@
-Yellow 0.4.6
+Yellow 0.4.7
============
Yellow is for people who make websites. [Visit website](http://datenstrom.se/yellow).
diff --git a/system/core/core.php b/system/core/core.php
@@ -5,7 +5,7 @@
// Yellow main class
class Yellow
{
- const Version = "0.4.6";
+ const Version = "0.4.7";
var $page; //current page
var $pages; //pages from file system
var $config; //configuration
@@ -2180,7 +2180,8 @@ class YellowToolbox
$type = "png";
}
} else if(substru($fileName, -3) == "jpg") {
- $dataBufferSize = min(filesize($fileName), 8192);
+ $dataBufferSizeMax = filesize($fileName);
+ $dataBufferSize = min($dataBufferSizeMax, 4096);
$dataBuffer = fread($fileHandle, $dataBufferSize);
$dataSignature = substrb($dataBuffer, 0, 11);
if(!feof($fileHandle) && $dataSignature=="\xff\xd8\xff\xe0\x00\x10JFIF\0")
@@ -2196,6 +2197,14 @@ class YellowToolbox
break;
}
$length = (ord($dataBuffer[$pos+2])<<8) + ord($dataBuffer[$pos+3]) + 2;
+ while($pos+$length+8 >= $dataBufferSize)
+ {
+ if($dataBufferSize == $dataBufferSizeMax) break;
+ $dataBufferDiff = min($dataBufferSizeMax, $dataBufferSize*2) - $dataBufferSize;
+ $dataBufferSize += $dataBufferDiff;
+ $dataBuffer .= fread($fileHandle, $dataBufferDiff);
+ if(feof($fileHandle)) { $dataBufferSize = 0; break; }
+ }
}
}
}