Rob Shearman
Biography
Email: <robertshearman@gmail.com>
A volunteer software developer, who previously worked for CodeWeavers.
Areas I have an interest in:
- COM and DCE/RPC.
- Wine's IDL compiler.
Other areas I have worked on in the past:
- Common Controls (mainly the toolbar control, the tooltips control, the drag list box and the hotkey control).
- Wineserver
Wininet (HTTP and UrlCache)
- Dbghelp (foo.so.debug support)
During my time at CodeWeavers I worked on the following programs, among others:
Links:
TODO list
DCE/RPC
- Add support for getting data from remote servers using registry and net APIs.
- Add Unix domain sockets DCE/RPC transport.
Change the endpoint mapper to use RPC instead of a home-brewed named pipe implementation.
IDL Compiler (widl)
- Write byte_count types.
- Write range types.
- Write transmit_as/represent_as types.
- Add support for bit fields.
- Add support for vararg functions.
- Add support for parsing ACF files.
- Allow specifying parameters for a function without specifying a name.
- Distinguish between integer constants with and without suffixes in the parser.
- Print all of the errors while parsing and checking an IDL file instead of stopping at the first one.
- Write a fuzzer that will automatically generate IDL code and corresponding C client and server code to ensure every possible data type representable by IDL is either marshalled correctly or emits an error.
- Localise errors, warnings and comments in generated code.
Determine the correct pointer type for arrays declared as pointers.
Fix memory leaks in generated code with reference pointers to arrays.
Make header writing use parse tree instead of hooks in the parser code.
COM
- Periodically check for unused libraries to unload.
Implement OleCreateLinkFromData.
Writing tests for currently un- or under- tested parts of ole32:
- OLE Clipboard
- File Monikers
- Unmarshaling a FT-marshaled object
IRunningObjectTable::NoteChangeTime
OleRegEnumVerbs
- OLE Menus
OleCreateFromData/OleQueryCreateFromData
Order of records returned in metafile created by OleMetafilePictFromIconAndLabel
CreateOleAdviseHolder
CreateDataAdviseHolder
Structured storage: IStream::LockRegion/UnlockRegion, IStorage::RenameElement, IStorage::MoveElementTo
- OleConvertIStorageToOLESTREAM
- STGMEDIUM user marshaling
IGlobalInterfaceTable::RevokeInterfaceFromGlobal
Bind Contexts
The default handler
Error Info
HGLOBALStreamImpl::CopyTo
CoMarshalInterThreadInterfaceInStream
ReadClassStm
Performance
- Use a lookaside list for the heap manager to make reuse of small heap blocks faster.
Wine Server
Store all data needed for tokens (TokenOwner still to do).
Use OBJECT_ATTRIBUTES where possible (see http://www.winehq.org/hypermail/wine-devel/2005/04/0426.html) - Alexandre and Vitaliy are discussing alternate solutions that will have the same effect.
- One-to-one mapping between Unix user IDs and SIDs and Unix group IDs and SIDs.
- Security descriptor inheritance in containers.
Other
Add support for building foo.so.debug to Makefiles (improve this patch: http://www.winehq.org/hypermail/wine-devel/2004/11/att-0648/01-debuginfo.diff).
- Add support for a "page heap" where every heap block is allocated its own page so that heap buffer overruns can be detected more easily. (Effectively superseded by the superior Valgrind tool for Linux which does the same job and a lot more.)
- Automatic mounting of CIFS shares.
Long term (not likely to be finished for months or years):
- DCOM using Samba.
