Comments (9)
There is already a remark on this in the docstring for unsafeUseAsCStringLen
: If 'Data.ByteString.empty' is given, it will pass @('Foreign.Ptr.nullPtr', 0)@.
I'm not sure there's much more that can reasonably be done here. But feel free to re-open if you have ideas.
from bytestring.
It's on unsafeUseAsCStringLen but the remark is not on unsafeUseAsCString
There is a shared remark, and different ones. It's hard to know which ones are actually shared (all of them, none?). The documentation is not clear there.
from bytestring.
Ah. And yet remarking about empty
with unsafeUseAsCString
would seem a bit off since that's already very likely wrong for null-termination reasons.
from bytestring.
And yet remarking about empty with unsafeUseAsCString would seem a bit off since that's already very likely wrong for null-termination reasons.
Why? unsafeUseAsCString doesn't do any null-termination, does it?
from bytestring.
Yes, exactly. unsafeUseAsCString
doesn't add any null-termination, and the empty
bytestring can't be expected to be null-terminated.
from bytestring.
But i'm not talking about null-termination, I'm talking that the pointer itself returned may be NULL
.
I expect to see
-- If 'Data.ByteString.empty' is given, it will pass @'Foreign.Ptr.nullPtr'@.
for unsafeUseAsCString
, or a shared comment in Using ByteStrings with functions for CStrings section
Also is it then a bug that unsafeUseAsCStringLen "" print
doesn't give me a null pointer?
from bytestring.
I mean that a call unsafeUseAsCString empty someFunctionExpectingCString
is already very suspicious because it will pass a pointer to a buffer that isn't null-terminated to someFunctionExpectingCString
.
Also is it then a bug that unsafeUseAsCStringLen "" print doesn't give me a null pointer?
We make no guarantees about what underlying pointer is used in the empty result of packChars ""
.
from bytestring.
is already very suspicious because it will pass a pointer to a buffer that isn't null-terminated to
it might be, but it's irrelevant to this documentation issue. (The code I work one calls Data.ByteString.length
elsewhere, so C code is called with length, it just doesn't get it from unsafeUseAsCString*
.
from bytestring.
We make no guarantees about what underlying pointer is used in the empty result of packChars "".
Then the remark about empty
should be further clarified, as there is a difference between empty
and packChars ""
. Some values are equivalent to empty
, and some aren't (and again, it's hard to say whether that is a bug or conscious decision). Another example is copy empty
.
from bytestring.
Related Issues (20)
- bytestring-0.11.5.1 (ghc-9.4.6) fails to build on Fedora HOT 4
- isValidUtf8 is broken HOT 4
- Compatibility with GHC's JavaScript backend HOT 1
- Overhaul Data.ByteString.Builder.RealFloat HOT 5
- Float and Double standard with precision 0 outputs incorrectly HOT 2
- Positive and Negative Zero Print Incorrect Precision
- Guidelines for using with WriterT HOT 2
- RealFloat Zero Padded Exponent HOT 7
- Faster Printing for Known Normal and Subnormal IEEE754 Floating Point Values
- Broken links in haddocks of `ShortByteString` HOT 1
- Audit `foreign import ccall` types
- Drop support for GHCs older than 8.4 HOT 1
- Add a splice of ShortByteString builder
- 0.12.1.0 fails to build on darwin aarch64 with GHC-8.10.7 HOT 13
- Create strict bytestrings from FixedPrim with zero copy HOT 6
- Lazy `zip` is stricter than expected
- Document that `Data.ByteString.Lazy.appendFile` is not threadsafe.
- Eq and Ord for Builder
- Offer conversion with `Natural`. HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from bytestring.