Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / UnSafeCharBuffer.cs / 1305376 / UnSafeCharBuffer.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: UnSafeBuffer ** ** Purpose: A class to detect incorrect usage of UnSafeBuffer ** ** ===========================================================*/ namespace System { using System.Diagnostics; using System.Diagnostics.Contracts; unsafe internal struct UnSafeCharBuffer{ char * m_buffer; int m_totalSize; int m_length; [System.Security.SecurityCritical] // auto-generated public UnSafeCharBuffer( char *buffer, int bufferSize) { Contract.Assert( buffer != null, "buffer pointer can't be null." ); Contract.Assert( bufferSize >= 0, "buffer size can't be negative." ); m_buffer = buffer; m_totalSize = bufferSize; m_length = 0; } [System.Security.SecuritySafeCritical] // auto-generated public void AppendString(string stringToAppend) { if( String.IsNullOrEmpty( stringToAppend ) ) { return; } if ( (m_totalSize - m_length) < stringToAppend.Length ) { throw new IndexOutOfRangeException(); } fixed( char* pointerToString = stringToAppend ) { Buffer.memcpyimpl( (byte *) pointerToString, (byte*) (m_buffer + m_length), stringToAppend.Length * sizeof(char)); } m_length += stringToAppend.Length; Contract.Assert(m_length <= m_totalSize, "Buffer has been overflowed!"); } public int Length { get { return m_length; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: UnSafeBuffer ** ** Purpose: A class to detect incorrect usage of UnSafeBuffer ** ** ===========================================================*/ namespace System { using System.Diagnostics; using System.Diagnostics.Contracts; unsafe internal struct UnSafeCharBuffer{ char * m_buffer; int m_totalSize; int m_length; [System.Security.SecurityCritical] // auto-generated public UnSafeCharBuffer( char *buffer, int bufferSize) { Contract.Assert( buffer != null, "buffer pointer can't be null." ); Contract.Assert( bufferSize >= 0, "buffer size can't be negative." ); m_buffer = buffer; m_totalSize = bufferSize; m_length = 0; } [System.Security.SecuritySafeCritical] // auto-generated public void AppendString(string stringToAppend) { if( String.IsNullOrEmpty( stringToAppend ) ) { return; } if ( (m_totalSize - m_length) < stringToAppend.Length ) { throw new IndexOutOfRangeException(); } fixed( char* pointerToString = stringToAppend ) { Buffer.memcpyimpl( (byte *) pointerToString, (byte*) (m_buffer + m_length), stringToAppend.Length * sizeof(char)); } m_length += stringToAppend.Length; Contract.Assert(m_length <= m_totalSize, "Buffer has been overflowed!"); } public int Length { get { return m_length; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ToolStripPanelRow.cs
- PeerOutputChannel.cs
- IApplicationTrustManager.cs
- FocusWithinProperty.cs
- OdbcDataReader.cs
- GlyphRunDrawing.cs
- SoapHeaders.cs
- DataRelationPropertyDescriptor.cs
- NameObjectCollectionBase.cs
- SoapCodeExporter.cs
- MsmqChannelListenerBase.cs
- ConstrainedDataObject.cs
- CornerRadius.cs
- RequestSecurityTokenResponseCollection.cs
- RetrieveVirtualItemEventArgs.cs
- DigestTraceRecordHelper.cs
- PropertyRecord.cs
- ClientFormsAuthenticationCredentials.cs
- CopyOnWriteList.cs
- Debug.cs
- SQLStringStorage.cs
- CustomDictionarySources.cs
- ManipulationCompletedEventArgs.cs
- ClearTypeHintValidation.cs
- XamlTemplateSerializer.cs
- RsaKeyIdentifierClause.cs
- WpfSharedBamlSchemaContext.cs
- TemplateControlCodeDomTreeGenerator.cs
- ConfigurationStrings.cs
- MessageQueuePermissionEntry.cs
- Identifier.cs
- UnauthorizedWebPart.cs
- OracleCommand.cs
- ContainerAction.cs
- GroupItem.cs
- CopyOnWriteList.cs
- InsufficientExecutionStackException.cs
- ListBoxDesigner.cs
- HttpListenerResponse.cs
- RegexBoyerMoore.cs
- SchemaManager.cs
- Relationship.cs
- AnnotationAdorner.cs
- Emitter.cs
- OdbcEnvironmentHandle.cs
- SecUtil.cs
- HttpModuleActionCollection.cs
- LinqExpressionNormalizer.cs
- DesignerListAdapter.cs
- ProviderException.cs
- BaseTemplateCodeDomTreeGenerator.cs
- TextDecorationLocationValidation.cs
- SmtpSection.cs
- BitmapEffectvisualstate.cs
- AddInServer.cs
- SpecularMaterial.cs
- TextReader.cs
- NumberFormatInfo.cs
- StatusStrip.cs
- CellParaClient.cs
- DataGridViewBindingCompleteEventArgs.cs
- TypeConverterHelper.cs
- FamilyMapCollection.cs
- SqlFormatter.cs
- InputManager.cs
- IsolatedStorageFile.cs
- CompilerGlobalScopeAttribute.cs
- WindowsFormsSectionHandler.cs
- SqlDataSourceFilteringEventArgs.cs
- SuppressMessageAttribute.cs
- NativeMethods.cs
- PropertySet.cs
- UnsafeNativeMethods.cs
- Int64Storage.cs
- XPathException.cs
- DrawingVisualDrawingContext.cs
- SchemaConstraints.cs
- DecimalAnimation.cs
- xdrvalidator.cs
- ContentElement.cs
- WeakEventTable.cs
- ClientApiGenerator.cs
- EntityException.cs
- Dispatcher.cs
- XmlWriterSettings.cs
- _HeaderInfoTable.cs
- ScaleTransform.cs
- EdgeModeValidation.cs
- CodeDelegateInvokeExpression.cs
- FileClassifier.cs
- StreamGeometry.cs
- XamlPoint3DCollectionSerializer.cs
- FileChangesMonitor.cs
- CompositionDesigner.cs
- XmlUrlResolver.cs
- SqlNotificationRequest.cs
- WindowPatternIdentifiers.cs
- SoapTypeAttribute.cs
- Package.cs
- OAVariantLib.cs